JavaScript正则表达式表示法有什么问题?

时间:2010-06-20 06:35:19

标签: javascript regex syntax literals

我正在阅读道格拉斯·克罗克福德的网页JavaScript: The World's Most Misunderstood Programming Language,我不禁注意到,在“设计错误”中,他提到了“字面正则表达式的符号”。究竟他在说什么? JavaScript的正则表达式表示法有什么问题,为什么?

4 个答案:

答案 0 :(得分:9)

可能与它强制你逃脱/个字符的事实有关,也许他想要一个更独特的角色用作符号。

/test//无效,而/test\//是有效的正则表达式。

在某些语言中,您实际上可以在字符串中指定标记字符,例如:

$regex = '#test/#';

#符号用于表示。

答案 1 :(得分:1)

我可以想象正则表达式文字表示法是阻止正则表达式引擎与语言规范分离的障碍。

如果所有正则表达式都是字符串,则它们在语言级别始终有效,并且正则表达式引擎可以更自由地解释它们。

但这只是猜测。我不知道Crockford对他的陈述是什么意思。

我个人认为正则表达式文字很有用。它比new RegExp(pattern, flags)替代方案简单得多,需要遵守正则表达式转义字符串转义规则("Path\\\\with\\\\backslashes",任何人?)。除了处理动态正则表达式之外,我无法看到表示法的巨大好处。

答案 2 :(得分:0)

他真的不清楚分号插入是错误的意思。也许他将分号视为语句分隔符。如果是这样,我不同意。没有分号代码混淆器/缩小器不会在您的代码上运行。

答案 3 :(得分:0)

this或者因为“它们应该是一行,没有空格或插入评论”,每个this可能会混淆用于评论和分割的斜杠。