JS如何使用正則表達(dá)式(match)截取括號(hào)中的文字和數(shù)字
引言
如題所示呢,大概需求就是將一串字符串中的指定內(nèi)容截取,然后對(duì)截取的內(nèi)容在做截取,小小的套娃一下,最后對(duì)得到的內(nèi)容做相應(yīng)的處理。類似于這樣:

這種需求聽(tīng)起來(lái)很合(胡)理(扯),首先首先要截取字符串長(zhǎng)度并沒(méi)有限制的,所以就不能去做固定位置截取,這里為了實(shí)現(xiàn)這個(gè)小小的需求,我借助了正則表達(dá)式及match方法相互配合。
思路:
- 因?yàn)橐厝〉膬?nèi)容都處在括號(hào)內(nèi),故首先將括號(hào)中的內(nèi)容提取出來(lái)
- 然后在對(duì)截取內(nèi)容做漢字和數(shù)字的分開(kāi)提取
- 最后按需求對(duì)數(shù)字進(jìn)行轉(zhuǎn)換千克即可
步驟:
(1)取出括號(hào)中的內(nèi)容使用正則惰性匹配 大概寫(xiě)法是 /\((.+?)\)/g
(2)取數(shù)字,所有數(shù)字或小數(shù)都會(huì)取出 /\d+(.\d+)?/g
(3)取漢字,這里需要借助漢字編碼 /[\u4e00-\u9fa5]/g
代碼:
因?yàn)槲沂荲ue項(xiàng)目使用了filter 如下:
filters: {
toNumber(val) {
// 取出括號(hào)中的內(nèi)容
let res = val.match(/\((.+?)\)/g)
let num = 0
if (res) {
res.forEach(ele => {
let numEle = ele.match(/\d+(.\d+)?/g).toString() //取出數(shù)字
let unitEle = ele.match(/[\u4e00-\u9fa5]/g).join("") // 取出漢字
switch (unitEle){
case '克':
num += (numEle * 1) / 1000
break;
case '千克':
num += numEle * 1
break;
case '噸':
num = num + (numEle * 1) * 1000
break;
case '斤':
num += (numEle * 1) * 0.5
break;
}
})
return num+'千克'
}else {
return res
}
}
},總結(jié)
到此這篇關(guān)于JS如何使用正則表達(dá)式(match)截取括號(hào)中的文字和數(shù)字的文章就介紹到這了,更多相關(guān)JS正則match截取括號(hào)文字?jǐn)?shù)字內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Bootstrap零基礎(chǔ)學(xué)習(xí)第一課之模板
這篇文章主要為大家詳細(xì)介紹了Bootstrap零基礎(chǔ)學(xué)習(xí)第一課:模板,感興趣的小伙伴們可以參考一下2016-07-07
ECMAScript6新增值比較函數(shù)Object.is
這篇文章主要介紹了ECMAScript6新增值比較函數(shù)Object.is的相關(guān)資料,需要的朋友可以參考下2015-06-06
javascript實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)下拉框菜單
這篇文章主要為大家詳細(xì)介紹了javascript實(shí)現(xiàn)省市區(qū)三級(jí)聯(lián)動(dòng)下拉框菜單很詳細(xì)的代碼,解決了大家實(shí)現(xiàn)javascript省市區(qū)三級(jí)聯(lián)動(dòng)下拉框菜單的問(wèn)題,感興趣的小伙伴們可以參考一下2015-11-11

