样例字符串为 =aa=bb=cc=dd=
。
我尝试了
string.match(/=(\w*)=/)
但这只会返回aa
。
我怎样从样本字符串中找到aa
、bb
、cc
和dd
?
样例字符串为 =aa=bb=cc=dd=
。
我尝试了
string.match(/=(\w*)=/)
但这只会返回aa
。
我怎样从样本字符串中找到aa
、bb
、cc
和dd
?
这个正则表达式将明确匹配您的要求,并将非分隔符部分放在第一个捕获组中:
=([^=]+)(?==)
不幸的是,JavaScript正则表达式没有反向引用,否则这个问题可以更容易地解决。
以下是一些代码:
var str = '=([^=]+)(?==)';
var re = /=([^=]+)(?==)/g,
ary = [],
match;
while (match = re.exec(str)) {
ary.push(match[1]);
}
console.log(ary);
(?==)
捕获组有什么作用?没有它,也能正常工作。您能否提供一个重要的字符串示例? - batman=a=b=nomatch,=c=
中的nomatch
会匹配。只是尽可能精确地尝试。 - Daniel Gimenez(?= ... )
是一个前瞻。它检查紧接其后的字符是否与...
中的内容相符,但不会消耗它,这样就不会出现替代结果(即aa、cc和缺少bb、dd)。 - Jerryvar values = yourString.split('=');
您将获得包含所有所需值的数组。
这个正则表达式将捕获字符串中所有非相等的字符。
=([^=]*)(?==)
实时例子:http://www.rubular.com/r/vPW2GJqBWP
示例文本
=aa=bb=cc=dd=
匹配
捕获组1将包含以下内容
[0] => aa
[1] => bb
[2] => cc
[3] => dd
string.split('=')