在jscript正则表达式字符类中转义正斜杠?

问题描述:

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

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

现在,我相信这是正确的,但日食的javascript验证不同意:

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

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

我们可以通过逃避/像这样满足日食:

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

请注意,这两个版本为我工作。

我的这个问题是:

  • 据我知道我做的需要专门逃脱斜线在这个范围内。这可能是具体情况(如在javascript中,它是使用的分隔符)。
  • 虽然他们似乎都在工作,我宁愿使用“正确”的版本,因为在不同的环境行为,以及,以及..因为正确和所有:)

有谁知道我应该这样做? 是否逃脱?我没有找到让我逃避的范围内/任何有信誉的网站,但Eclipse的验证可能是太愚蠢了......

+0

是的,恼人的Notepad ++的语法突出显示也会出错。 – MikeM 2013-01-04 19:32:32

标准明确说,你可以把任何东西转义字符类除外\]和换行符:

RegularExpressionClassChar :: 
    RegularExpressionNonTerminator but not ] or \ 
    RegularExpressionBackslashSequence 

RegularExpressionNonTerminator :: 
    SourceCharacter but not LineTerminator 

http://es5.github.com/#x7.8.5)。无需转义/。另一方面,如果有疑问,我个人会逃避一切,只是为了让更少的智能解析器开心。

+0

不错:)。我对“Ecma标准”不是很了解,这是用于大多数.js解析器的标准吗?你可以逃避一些不需要在不破坏东西的情况下逃脱的东西吗? – Nanne 2012-02-10 11:29:32

+0

@Nanne:是的,大多数的JavaScript供应商都试图跟上ecma标准。不是每个人都完全正确,但基本的东西应该在任何地方都一样。是的,即使可以省略,额外的反斜杠也不会造成伤害。 – georg 2012-02-10 11:37:15