我有點困惑於我應該用來檢測".-", "-."
的RegExp,它確實通過了這個組合作爲有效,但在同一時間,"-_","_-"
也得到驗證。我是否錯過了某些東西或者沒有正確地逃避某些事情?JS - 用於檢測「.-」,「 - 」的RegExp。
var reg=new RegExp("(\.\-)|(\-\.)");
實際上似乎任何組合包含'-'
獲得通過。它
知道了,謝謝大家。
我有點困惑於我應該用來檢測".-", "-."
的RegExp,它確實通過了這個組合作爲有效,但在同一時間,"-_","_-"
也得到驗證。我是否錯過了某些東西或者沒有正確地逃避某些事情?JS - 用於檢測「.-」,「 - 」的RegExp。
var reg=new RegExp("(\.\-)|(\-\.)");
實際上似乎任何組合包含'-'
獲得通過。它
知道了,謝謝大家。
由於您使用RegExp構造函數而不是/
的字符串,因此需要轉義兩次。
>>> "asd_-ads".search("(\.\-)|(\-\.)")
3
>>> "asd_-ads".search(/(\.\-)|(\-\.)/)
-1
>>> "asd_-ads".search(new RegExp('(\\.\-)|(\-\\.)'))
-1
這些不是'''分隔符「,他需要跳過'''''因爲他使用**字符串**作爲表達式。 –
@Felix我現在以更正確的方式解釋。 – sapht
您正在使用雙引號,因此.
沒有得到一個反斜線,用這個符號:
var reg = /(\.\-)|(\-\.)/;
在符號/(\.\-)|(\-\.)/
,該表達是正確的。 在您選擇的符號中,您必須加倍所有反斜槓,因爲它本身仍有其特殊含義,如\\
,\n
等等。
注意沒有必要逃避這裏的破折號:var reg = new RegExp("(\\.-)|(-\\.)");
如果您不需要區分匹配,你可以使用一個單一的封閉拍攝,或者根本沒有,如果你只是要檢查的匹配: "\\.-|-\\."
仍然有效。
如果您想知道結果表達式,請在控制檯中複製RegExp(「(\。\ - )|(\ - \。)」)。輸出是'/(.-)|( - 。)/'和'.'匹配任何字符。 –