使用正则表达式的两个前瞻字符串

时间:2017-02-20 20:20:21

标签: javascript regex

我有一个简单的正则表达式,如下所示:

var myRegex = /%(?!FOO%)([A-Za-z_]*)%/g; 

我要做的是找到两个不是%的文字FOO引号之间的任何实例。所以BARWHATEVER之类的东西都会匹配。

我的问题是,扩展它以寻找多个字符串的最佳方法是什么?假设我想匹配任何非FOOBAR的内容。

var myRegex = /%(?!(FOO|BAR)%)([A-Za-z_]*)%/g; 

我尝试了上面的变体,但似乎只找到了第一个匹配项FOO。我怎样才能找到它们?

1 个答案:

答案 0 :(得分:0)

你可以尝试这样的事情:(假设这是你想要完成的事情

一般方式 w / lookbehind支持

(?<=%)(?!FOO|BAR)(\w+)(?=%)

JavaScript方式 w / o lookbehind支持

&#13;
&#13;
var str = '%FOO%HELLO%BAR%WORLD%';
var match = str.match(/%(?!FOO|BAR)(\w+)(?=%)/g).map(e => {
  return e.replace('%', '');
});
console.log(match);
&#13;
&#13;
&#13;