JS如何使用正则表达式(match)截取括号中的文字和数字
引言
如题所示呢,大概需求就是将一串字符串中的指定内容截取,然后对截取的内容在做截取,小小的套娃一下,最后对得到的内容做相应的处理。类似于这样:
这种需求听起来很合(胡)理(扯),首先首先要截取字符串长度并没有限制的,所以就不能去做固定位置截取,这里为了实现这个小小的需求,我借助了正则表达式及match方法相互配合。
思路:
- 因为要截取的内容都处在括号内,故首先将括号中的内容提取出来
- 然后在对截取内容做汉字和数字的分开提取
- 最后按需求对数字进行转换千克即可
步骤:
(1)取出括号中的内容使用正则惰性匹配 大概写法是 /\((.+?)\)/g
(2)取数字,所有数字或小数都会取出 /\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() //取出数字 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)截取括号中的文字和数字的文章就介绍到这了,更多相关JS正则match截取括号文字数字内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
最新评论