2015-06-03 203 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所以它落在無效範圍和所以匹配之間。

相關問題