JavaScript正则表达式匹配“a \”b“

时间:2014-11-25 07:31:58

标签: javascript regex

我正在使用JavaScript Regexp实现词法分析器,其中一个令牌类型是双引号字符串,例如“abc”。复杂的情况是带有转义引号字符的字符串,如“a \”b“。

我假设以下2个正则表达式是等效的: 1)"(\\"|[^"])*" 2)"([^"]|\\")*"

但实际上只有#1有效。您可以在http://regex101.com/#javascript上针对“a \”b“尝试2个正则表达式。我不知道两者之间有什么区别,是否有更好的解决方案?

PS:事实证明#1和#2不同,请参阅以下简化示例:

regex = /(a|ab)*/
regex.exec("aab") -> matches "aa"

JavaScript Regexp不会尽可能地尝试匹配,它只会尝试找到可行的匹配。

虽然以下一个有效,但因为“aa”不匹配。

regex = /^(a|ab)*$/
regex.exec("aab") -> matches "aab"

0 个答案:

没有答案