2015-07-11 83 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

那么我现在觉得自己很愚蠢,我知道这一点。不知道为什么我错过了。 –