2015-07-11 106 views
1

我有點爲難,發現這裏正則表達式的工作原理:https://regex101.com/r/rD5nP9/1正則表達式返回null

它發現所有的比賽,但是當我把它放在我的代碼,我得到null,我不知道爲什麼。

var value = "name == 'Bob'"; 

var regex = new RegExp('(.+?)\s(.+?)\s(.+)'); 

var matches = value.match(regex); // returns null 
regex.exec(value); // returns null 

我想獲得一個數組,看起來像這樣:

["name", "==", "'Bob'"] 

但由於某些原因的代碼是沒有找到它,但它適用於http://regex101.com,我也得到一個列表的匹配項目。

回答

3

您需要雙重轉義反斜槓或以其他方式將\s視爲轉義序列。

var regex = new RegExp("(.+?)\\s(.+?)\\s(.+)"); 

使用正斜槓作爲正則表達式的分隔符。

var regex = /(.+?)\s(.+?)\s(.+)/; 
+0

那麼我現在覺得自己很愚蠢,我知道這一點。不知道爲什麼我錯過了。 –