我想匹配除字符串'1AB'以外的所有内容。我怎么做?当我尝试时,它说没有匹配的内容。
var text = "match1ABmatch match2ABmatch match3ABmatch";
var matches = text.match(/match(?!1AB)match/g);
console.log(matches[0]+"..."+matches[1]);
答案 0 :(得分:1)
解决方法不会占用文本,即匹配其模式时正则表达式索引不会移动。有关更多详细信息,请参见Lookarounds Stand their Ground。您仍然必须将文本与使用模式(在这里是数字)进行匹配。
在预行之后添加\w+
单词匹配模式。注意:如果可以有一个或多个非空白字符,也可以使用\S+
。如果可以有任何字符,请使用.+
(匹配换行符以外的1个或多个字符)或[^]+
(匹配换行符)。
var text = "match100match match200match match300match";
var matches = text.match(/match(?!100(?!\d))\w+match/g);
console.log(matches);
模式详细信息
match
-文字子字符串(?!100(?!\d))
-如果在当前位置的右侧紧跟着100
子字符串,且后面没有数字(如果您想使匹配失败,则匹配失败),则负匹配将使匹配失败数字以 100
开头,删除(?!\d)
前行)\w+
-1个或多个单词字符(字母,数字或_
)match
-文字子字符串