我想知道为什么这些正则表达式不等价:
建议每个括号只保存一个字符——最后匹配的字符。
我想知道为什么这些正则表达式不等价:
/(a)(a)(a)/.exec ("aaa").toString () => "aaa,a,a,a" , as expected
/(a){3}/.exec ("aaa").toString () => "aaa,a" :(
/(a)*/.exec ("aaa").toString () => "aaa,a" :(
如何修改最后两个,使它们的行为与第一个相同?关键在于我希望匹配并记住任意倍数。
下面是需要修改的代码:
/([abc])*/.exec ("abc").toString () => "abc,c"
建议每个括号只保存一个字符——最后匹配的字符。
str.match(/([^ \n\t\(\)]+|\(|\))/g)
绕过了这个问题 - 这也将括号视为标记。但我认为这不是问题的解决方案。 - Christoph85LE