【问题标题】:Escape forward slash in jscript regexp character class?在javascript正则表达式字符类中转义正斜杠?
【发布时间】:2014-04-29 16:02:16
【问题描述】:

我有一个正则表达式测试数字 (0-9) 和/或正斜杠 (/)。它看起来像这样:

/^[0-9/]+$/i.test(value)

现在我认为这是正确的,但 eclipse javascript 验证器不同意:

标记“]”的语法错误,删除此标记

我想这是因为分隔符/定界符是 / 并且 Eclipse '认为' 正则表达式已完成(因此 ] 将是意外的)。

我们可以通过转义/ 来满足eclipse,如下所示:

/^[0-9\/]+$/i.test(value)

请注意,这两个版本都适用于我。

我的问题是:

  • 据我所知,我确实需要专门在该范围内转义正斜杠。它可能是特定情况(例如,对于 javascript,它是使用的分隔符)。
  • 虽然它们似乎都在工作,但我宁愿使用“正确”版本,因为在不同环境中的行为,而且,嗯.. 因为正确且所有 :)

有人知道我应该做什么吗? 是否转义?我没有找到任何知名网站告诉我在某个范围内转义 /,但 Eclipse-validator 可能并不完全愚蠢......

【问题讨论】:

  • 是的,令人讨厌的是 Notepad++ 的语法高亮也出现了这个错误。

标签: javascript regex eclipse escaping


【解决方案1】:

标准明确规定,除了\] 和换行符之外,您可以将任何未转义的内容放入字符类中:

RegularExpressionClassChar ::
   RegularExpressionNonTerminator but not ] or \
   RegularExpressionBackslashSequence

RegularExpressionNonTerminator ::
    SourceCharacter but not LineTerminator

(http://es5.github.com/#x7.8.5)。无需逃避/

另一方面,我个人会在有疑问时逃避一切,只是为了让不太聪明的解析器高兴。

【讨论】:

  • 不错的一个:)。我不太了解“Ecma 标准”,这是大多数 .js 解析器使用的标准吗?你能在不破坏东西的情况下逃脱一些不需要逃脱的东西吗?
  • @Nanne:是的,大多数 javascript 供应商都试图跟上 ecma 标准。不是每个人都完全正确,但基本的事情应该在任何地方都一样。是的,一个额外的反斜杠并没有什么坏处,即使可以安全地省略它。
猜你喜欢
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-25
  • 2016-01-16
  • 2012-06-01
相关资源
最近更新 更多