var p=/(8[a-z]{3}0)+/;
var str='8asd08asd08asd08asd0';
alert(str.replace(p,'*'))
这里默认的贪婪模式怎么都匹配到了呢?不是应该匹配4次么 里面的a-z的定位长度没作用呢 非贪婪是能匹配一个的
var p=/(8[a-z]{3}0)+/;
var str='8asd08asd08asd08asd0';
alert(str.replace(p,'*'))
这里默认的贪婪模式怎么都匹配到了呢?不是应该匹配4次么 里面的a-z的定位长度没作用呢 非贪婪是能匹配一个的
贪婪模式并不是按你说的匹配4次,是把能匹配的都匹配到。所以,你这儿的贪婪匹配把整个str都匹配了,整个儿替换成*了。
要实现你的效果:不贪婪,全局匹配就好。
var p=/(8[a-z]{3}0)/g;
var str='8asd08asd08asd08asd0';
console.log(str.replace(p,'*'));
var p=/(8[a-z]{3}0)/g;
var str='8asd08asd08asd08asd0';
alert(str.replace(p,'*'))
这样?返回**,是不是你要的结果?
从代码看 (8[a-z]{3}0) 这块内容至少匹配1次;
经过贪婪匹配 8asd08asd08asd08asd0
会一次全都匹配;
如果想匹配4次就用
/8[a-z]{3}0/g
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
因为你用了
+
啊,(8[a-z]{3}0)
这个片段重复一次及以上,会被匹配到一起的。你想要这一个片段匹配多次,改成这样就行了: