84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
var p=/(8[a-z]{3}0)+/; var str='8asd08asd08asd08asd0'; alert(str.replace(p,'*'))
这里默认的贪婪模式怎么都匹配到了呢?不是应该匹配4次么 里面的a-z的定位长度没作用呢 非贪婪是能匹配一个的
闭关修行中......
因为你用了+啊,(8[a-z]{3}0)这个片段重复一次及以上,会被匹配到一起的。你想要这一个片段匹配多次,改成这样就行了:
+
(8[a-z]{3}0)
var p=/8[a-z]{3}0/g;
贪婪模式并不是按你说的匹配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 会一次全都匹配;
8asd08asd08asd08asd0
如果想匹配4次就用
/8[a-z]{3}0/g
因为你用了
+
啊,(8[a-z]{3}0)
这个片段重复一次及以上,会被匹配到一起的。你想要这一个片段匹配多次,改成这样就行了:
贪婪模式并不是按你说的匹配4次,是把能匹配的都匹配到。所以,你这儿的贪婪匹配把整个str都匹配了,整个儿替换成*了。
要实现你的效果:不贪婪,全局匹配就好。
这样?返回**,是不是你要的结果?
从代码看 (8[a-z]{3}0) 这块内容至少匹配1次;
经过贪婪匹配
8asd08asd08asd08asd0
会一次全都匹配;如果想匹配4次就用