正则表达式中的Java脚本与某些内容不匹配

时间:2018-11-18 17:08:21

标签: javascript regex

我想匹配除字符串'1AB'以外的所有内容。我怎么做?当我尝试时,它说没有匹配的内容。

var text = "match1ABmatch match2ABmatch match3ABmatch";
var matches = text.match(/match(?!1AB)match/g);
console.log(matches[0]+"..."+matches[1]);

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-文字子字符串

请参见regex demo online