如何在javascript正则表达式中选择lookbehind单词

时间:2016-11-27 18:29:31

标签: javascript regex

My regex: <br>![a-z]+(?=<br>)

fooword1<br>!fooword2<br>fooword3

我试图获得以"!"开头的字词,例如"!fooword2",并存在于<br>个标记之间。但是当我应用此<br>![a-z]+(?=<br>)时,我得到"<br>!fooword2". 我只需要选择"!fooword2"。我的意思是我不需要先选择<br>

那么我的正则表达式有什么问题?

3 个答案:

答案 0 :(得分:1)

怎么样:

<br>(![a-z0-9]+)<br>

作为正则表达式?

答案 1 :(得分:0)

由于JS不支持LookBehind,您可以使用组排除第一个<br>

var String = "fooword1<br>!fooword2<br>fooword3";
var Regexp = /<br>(![a-z]+\d)<br>/g;
var match = Regexp.exec(String);
console.log(match[1])

另一个选项是在最后使用<br>使用肯定前瞻,并在开头依赖!

![a-z]+\d(?=<br>)

演示:https://regex101.com/r/kRzoQB/3

答案 2 :(得分:0)

这可能会更好。它不依赖于使用的标记。

var str = 'fooword1<br>!fooword2<br>fooword3',
      regi = /(!\w*\d{1})/g,
      obj = regi.exec(str);

console.log(obj[0]);

你需要[0],因为exec返回一个数组,你要查找的值是该数组的零索引。