在jscript正则表达式字符类中逃避正斜杠?

时间:2012-02-10 11:01:55

标签: javascript regex eclipse escaping

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

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

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

  

令牌“]”上的语法错误,删除此令牌

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

我们可以通过逃避/来满足日食:

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

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

我的问题是:

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

有谁知道我应该做什么? 逃避与否?我没有发现任何声誉良好的网站告诉我逃避范围内的/,但Eclipse验证器可能并非完全愚蠢......

1 个答案:

答案 0 :(得分:9)

该标准清楚地表明,除了\]和换行符之外,你可以将任何未转义的字符放在角色类中:

RegularExpressionClassChar ::
   RegularExpressionNonTerminator but not ] or \
   RegularExpressionBackslashSequence

RegularExpressionNonTerminator ::
    SourceCharacter but not LineTerminator

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

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