JS利用正则表达式(match)截取括号中的文字与数字

如题所示呢,大概需求就是将一串字符串中的指定内容截取,然后对截取的内容在做截取,小小的套娃一下,最后对得到的内容做相应的处理。类似于这样:

这种需求听起来很合(扯)理(蛋),首先首先要截取字符串长度并没有限制的,所以就不能去做固定位置截取,这里为了实现这个小小的需求,我借助了正则表达式及match方法相互配合。

思路:

  1. 因为要截取的内容都处在括号内,故首先将括号中的内容提取出来
  2. 然后在对截取内容做汉字和数字的分开提取
  3. 最后按需求对数字进行转换千克即可

 步骤:

    (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
				}
		
			}
		},

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024次日落

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值