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

Sas*_*gov 11 javascript regex syntax literals

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

med*_*iev 9

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

/test//无效,同时/test\//是有效的正则表达式.

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

$regex = '#test/#';
Run Code Online (Sandbox Code Playgroud)

#符号做denotion.

  • 是啊.Crockford的抱怨是关于"超载"斜线角色,但我认为他主要担心的是JS中的超载(我认为!).例如,如果用`/*...*/`注释出代码块,你可以看到如果你试图注释掉`/0x[0-9a-f]*/.test(strMyString)会发生什么. "那个.我曾经多次使用RegExp()方法创建正则表达式,因为文字很容易出错. (3认同)
  • @Justin你不太可能经常在现实生活中遇到这个问题,特别是如果你的IDE支持JS语法高亮.但是我已经遇到过几次这个特定的问题而且这真是令人头疼.在记事本的页面上注释掉所有JS,并看到它在几周内没有触及的工作代码上死亡."什么......?但那不是问题所在.而且这一切都被评出了!!" 如果你将一些大的,最小化的JS框架(比如jQuery)嵌入到你的站点的代码库中然后将它注释掉(例如,看看如何在没有jQuery的情况下加载它),也可以保证发生在你身上.乐趣. (2认同)
  • @musicfreak ["stream editor"sed](http://en.wikipedia.org/wiki/Sed)根据正则表达式执行替换,并允许您为替换选择分隔符号. (2认同)