RegEx:获取除符号之外的%符号之间的字符串

时间:2014-01-21 02:24:10

标签: javascript regex

例如,在字符串

'apple %cherry% carrots %berries2%'

我想提取以下内容:

[
 'cherry',
 'berries2'
]

我尝试使用以下RegEx,但它们都包含%符号:

/%[a-zA-Z\d]+%/g

我根据我在此处找到的内容制作了此RegEx:Regex to match string between %

如果有所不同,这就是我提取字符串的方式:http://jsfiddle.net/pixy011/APab8/

2 个答案:

答案 0 :(得分:4)

试试这个正则表达式:

/[a-zA-Z\d]+(?=%)/g

(?= ... )是一个积极的前瞻,这基本上意味着它会检查以确保内容在字符串中,而不是实际捕获它们。

由于%%不匹配,因此不需要第一个[a-zA-Z\d]

试运行:

var matches = 'apple %cherry% carrots %berries2%'.match(/[a-zA-Z\d]+(?=%)/g);
console.log(matches); // => ["cherry", "berries2"]

答案 1 :(得分:3)

这应该有效:

var re = /%([^%]*)%/g,
    matches = [],
    input = 'apple %cherry% carrots %berries2%';
while (match = re.exec(input)) matches.push(match[1]);

console.log(matches);
["cherry", "berries2"]