至少,在Javascript中,在Chrome和Node.js上进行了测试:
new RegExp(/foo(optional)*boo/).exec('foooptionalboo')
Run Code Online (Sandbox Code Playgroud)
将与optional括号中的匹配:
[ 'foooptionalboo',
'optional',
index: 0,
input: 'foooptionalboo' ]
Run Code Online (Sandbox Code Playgroud)
但是如果你想在那之间有一些东西optional:
new RegExp(/foo.*(optional)*.*boo/).exec('foooptionalboo')
Run Code Online (Sandbox Code Playgroud)
然后optional找不到:
[ 'foooptionalboo',
'optional',
index: 0,
input: 'foooptionalboo' ]
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
之前的.*比赛有机会.optional(optional)*
让它变得非贪婪(带有a ?),如果跟随它的东西将不匹配.
/foo.*?(optional)*.*boo/.exec("foooptionalboo")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
58 次 |
| 最近记录: |