求解答,关于 JS 中正则量词的贪婪模式和惰性模式的问题?

2015-10-28 23:14:51 +08:00
 zhzhzxh
哪位大神可以解释一下为什么'abcdef'.replace(/[a-z]+/,'1');的结果是‘ 1 ’而不是‘ 111111 ’呢?
2040 次点击
所在节点    问与答
4 条回复
jings
2015-10-28 23:21:46 +08:00
加好代表一个或一个以上 replace 左边匹配 abcdef 替换成 右边 1 就为 1
去掉加号和换成?号 分别测试下
BOYPT
2015-10-28 23:38:13 +08:00
'abcdef'.replace(/[a-z]/g,'1');
"111111"
jonnyhsy
2015-10-29 06:14:45 +08:00
'abcdef'.replace(/[a-z]+?/,'1');
"1bcdef"

"?" 加在重复匹配符(+/./?)表示非贪婪,默认贪婪匹配,所以你的正则吃掉了所有的"abcde", 替换成了 1
SoloCompany
2015-10-29 07:02:17 +08:00
'abcdef'.replace(/[a-z]+?/g,'1 ’);
111111

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/231858

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX