2015-06-03 202 views
0

当试图停止在字符串中匹配单引号(')时遇到此问题。带文字和单引号的Javascript正则表达式

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

假设这产生了两个问题:

  1. 为什么字面行为不同的变量?
  2. 为什么第三位执行官找不到匹配的单引号?

感谢

> 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 
+0

再次退出反斜杠。 –

+0

请参阅https://stackoverflow.com/questions/3154394/javascript-regexp-object-creation-problem –

+0

再次转义反斜杠,即使用'/^[a-zA-Z0-9 -_ \// ()\ [\];:+〜。!\\] * $ /' –

回答

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

始终保持在端-escape它以避免形成一个无效的范围。

这里-形成范围从space32_95'39所以它落在无效范围和所以匹配之间。

相关问题