我的字符串被定义为;
var str = 'participant Tracking [[http://www.yahoo.com]] again [[more]]'
var res = str.match(/\[\[(.*[^\]])\]\]/g)
我想提取“http://www.yahoo.com”和“更多”,但我正在
[ '[[http://www.yahoo.com]] again [[more]]' ]
正则表达式应该是什么?
答案 0 :(得分:2)
将]]
置于否定的字符类中不会给出您想要的结果。在下面的负面预测中使用。
\[\[((?:(?!\]\]).)*)\]\]
> var str = 'participant Tracking [[http://www.yahoo.com]] again [[more]]'
undefined
> var re = /\[\[((?:(?!\]\]).)*)\]\]/g;
undefined
> var matches = [];
undefined
> while (m = re.exec(str)) {
..... matches.push(m[1]);
..... }
2
> console.log(matches)
[ 'http://www.yahoo.com', 'more' ]
答案 1 :(得分:2)
在循环中使用exec()
方法,将捕获的组的匹配结果推送到结果数组。此外,从捕获组中删除点.
贪婪的运算符*
,因为您没有必要使用否定。
var str = 'participant Tracking [[http://www.yahoo.com]] again [[more]]'
var re = /\[\[([^\]]*)]]/g,
matches = [];
while (m = re.exec(str)) {
matches.push(m[1]);
}
console.log(matches) //=> [ 'http://www.yahoo.com', 'more' ]
答案 2 :(得分:0)
var str = 'participant Tracking [[http://www.yahoo.com]] again [[more]]'
var res = str.match(/\[\[(.+?)\]\]/)
console.log(res[1]);