11

我正在阅读 Douglas Crockford 的网页,JavaScript:世界上最容易被误解的编程语言,我不禁注意到,在设计错误下,他提到了“文字正则表达式的表示法”。他到底在说什么?JavaScript 的正则表达式符号有什么问题,为什么?

4

4 回答 4

9

可能与它强制您转义/字符这一事实有关,也许他想要一个更独特的字符用作符号。

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

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

$regex = '#test/#';

#符号在哪里表示。

于 2010-06-20T06:39:33.683 回答
1

我可以想象,正则表达式文字符号是发展与语言规范分离的正则表达式引擎的障碍。

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

但这只是一个猜测。我不知道克罗克福德的声明是什么意思。

就我个人而言,我发现正则表达式文字很有帮助。new RegExp(pattern, flags)由于它需要同时遵守正则表达式转义字符串转义规则("Path\\\\with\\\\backslashes"有人知道吗?) ,因此它比替代方案要简洁得多。除了处理动态正则表达式之外,我看不到这种表示法的巨大好处。

于 2011-01-02T09:47:17.923 回答
0

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

于 2011-01-02T08:22:00.143 回答
0

可能与用于注释和除法的斜线混淆了this或者因为“它们应该是一行,没有插入空格或注释” per this

于 2014-12-24T22:37:22.510 回答