带有文字和单引号的Javascript正则表达式

时间:2015-06-03 09:19:58

标签: javascript regex

我尝试停止在字符串中匹配的单引号(')时遇到此问题。

以下是Chrome中控制台会话的摘录。 Params是我想要匹配的正则表达式(不应该允许单引号或双引号?)。由于文本中的单引号,我原本预计前两位高管会找到一场比赛,而后两位将失败。

假设这提出了两个问题:

  1. 为什么文字的行为与变量不同?
  2. 为什么第三个exec在单引号上不匹配时会找到匹配项?
  3. 感谢

    > params
    > 
    >> "^[a-zA-Z0-9 -_/&,()\[\];:+~.!\\]*$"
    > 
    > 
    > new RegExp(params).exec("some string")
    >> ["some string"]
    > 
    > new RegExp("^[a-zA-Z0-9 -_/&,()\[\];:+~.!\\]*$").exec("some string")
    >> null
    > 
    > 
    > new RegExp(params).exec("some string's")
    >> ["some string's"]
    > 
    > new RegExp("^[a-zA-Z0-9 -_/&,()\[\];:+~.!\\]*$").exec("some string's")
    >> null
    

1 个答案:

答案 0 :(得分:1)

^[a-zA-Z0-9 _/&,()[];:+~.!\-]*$

始终将-放在最后或escape,以避免形成无效范围。

此处-形成从space 32_ 95的范围。'39所以它属于{{1}}在无效范围之间,所以匹配。