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

這種需求聽起來很合(胡)理(扯),首先首先要截取字符串長度并沒有限制的,所以就不能去做固定位置截取,這里為了實現(xiàn)這個小小的需求,我借助了正則表達式及match方法相互配合。
思路:
- 因為要截取的內容都處在括號內,故首先將括號中的內容提取出來
- 然后在對截取內容做漢字和數(shù)字的分開提取
- 最后按需求對數(shù)字進行轉換千克即可
步驟:
(1)取出括號中的內容使用正則惰性匹配 大概寫法是 /\((.+?)\)/g
(2)取數(shù)字,所有數(shù)字或小數(shù)都會取出 /\d+(.\d+)?/g
(3)取漢字,這里需要借助漢字編碼 /[\u4e00-\u9fa5]/g
代碼:
因為我是Vue項目使用了filter 如下:
filters: {
toNumber(val) {
// 取出括號中的內容
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
}
}
},總結
到此這篇關于JS如何使用正則表達式(match)截取括號中的文字和數(shù)字的文章就介紹到這了,更多相關JS正則match截取括號文字數(shù)字內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
js防抖函數(shù)和節(jié)流函數(shù)使用場景和實現(xiàn)區(qū)別示例分析
這篇文章主要介紹了js防抖函數(shù)和節(jié)流函數(shù)使用場景和實現(xiàn)區(qū)別,結合實例形式詳細分析了js防抖函數(shù)和節(jié)流函數(shù)基本功能、定義、用法區(qū)別及操作注意事項,需要的朋友可以參考下2020-04-04
關于Javascript加載執(zhí)行優(yōu)化的研究報告
這篇文章主要介紹了關于Javascript加載執(zhí)行優(yōu)化的研究報告,需要的朋友可以參考下2014-12-12
js正則表達式中test,exec,match方法的區(qū)別說明
本篇文章主要是對js正則表達式中test,exec,match方法的區(qū)別進行了介紹,需要的朋友可以過來參考下,希望對大家有所幫助2014-01-01

