RegEx用于匹配字符,除非它们包含在某些字符串中

时间:2015-12-15 16:56:37

标签: regex

我想说我想匹配字母E,Q和W.但是,如果他们在特定的字符串中找到它们,我就不希望它们匹配,例如,{{ 1}}。

HELLO

1 个答案:

答案 0 :(得分:3)

你可以使用一个漂亮的正则表达技巧。这是JavaScript中的一些代码,但它可以适用于任何语言:



var str = 'LKNSDG8E94GO98SGIOWNGOUH09PIHELLOBN0D98HREINBMUE',
    rgx = /HELLO|([EQW])/g,
    match;

while ((match = rgx.exec(str)) != null) {
    if (match[1]) output(match[1] + '\n');
}

function output(x) { document.getElementById('out').textContent += x; }

<pre id='out'></pre>
&#13;
&#13;
&#13;

基本上,你匹配HELLO|([EQW])。由于正则表达式本质上是贪婪的,如果遇到HELLO,它会立即与之匹配,从而跳过它内部的E

然后你可以检查捕获组。如果该捕获组中存在某些内容,我们就会知道它们是我们想要的东西。否则,它必须是HELLO的一部分,所以我们忽略它。