My regex: <br>![a-z]+(?=<br>)
fooword1<br>!fooword2<br>fooword3
我试图获得以"!"
开头的字词,例如"!fooword2"
,并存在于<br>
个标记之间。但是当我应用此<br>![a-z]+(?=<br>)
时,我得到"<br>!fooword2".
我只需要选择"!fooword2"
。我的意思是我不需要先选择<br>
。
那么我的正则表达式有什么问题?
答案 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>)
答案 2 :(得分:0)
这可能会更好。它不依赖于使用的标记。
var str = 'fooword1<br>!fooword2<br>fooword3',
regi = /(!\w*\d{1})/g,
obj = regi.exec(str);
console.log(obj[0]);
你需要[0],因为exec返回一个数组,你要查找的值是该数组的零索引。