正则表达式问题 JavaScript正则
varstr1='awergsffdasrty456rtrty45123456789dsfyghdjgjdg',str2='<ddclass="goods-price">...
var str1 ='awergsffdas rty456rtrty45123456789dsfyghdjgjdg'
, str2 ='<dd class="goods-price"> <em>¥99.00</em> </dd>';
正则1:
str.replace(/(?=[0-9]+)[4-6](?=[0-9]+)/,'*');
//结果:awergsffdas rty**6rtrty**123***789dsfyghdjgjdg
正则2:
str2.replace(/(?=[¥])[0-9]+[.]?[0-9]+?(?=<)/,'12.05');//没有变化
为什么1和2都是一样的句式 第二个没有效果 没匹配到99.00
/(?:[¥])[0-9]+[.]?[0-9]+?(?=<)/可以匹配到¥99.00 但明显¥不是想要的结果 展开
, str2 ='<dd class="goods-price"> <em>¥99.00</em> </dd>';
正则1:
str.replace(/(?=[0-9]+)[4-6](?=[0-9]+)/,'*');
//结果:awergsffdas rty**6rtrty**123***789dsfyghdjgjdg
正则2:
str2.replace(/(?=[¥])[0-9]+[.]?[0-9]+?(?=<)/,'12.05');//没有变化
为什么1和2都是一样的句式 第二个没有效果 没匹配到99.00
/(?:[¥])[0-9]+[.]?[0-9]+?(?=<)/可以匹配到¥99.00 但明显¥不是想要的结果 展开
1个回答
展开全部
用 (?<=[¥])[0-9]+[.]?[0-9]+?(?=<)
更多追问追答
追问
/(?<=[¥])[0-9]+[.]?[0-9]+?(?=<)/.test('')
VM11193:2 Uncaught SyntaxError: Invalid regular expression: /(?<=[¥])[0-9]+[.]?[0-9]+?(?=<)/: Invalid group
请注意,是JavaScript,不是後端,後端当然可以这样
追答
那就不要用零宽断言,直接获取替换第一个分组替换 ¥([0-9]+[.]?[0-9]+?)<
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询