"a: xyz b: pqr st c: lm no p"
我想要的结果:
"a" => "xyz"
"b" => "pqr st"
"c" => "lm no p"
var s = 'a: xyz b: pqr st c: lm no p';
var r = /(?:.(?!(?:a|b|c):))+/g;
var m;
while ((m = r.exec(s))) {
var s2 = m[0];
var r2 = /(a|b|c):\s*(.+)/;
var m2 = r2.exec(s2);
console.log('"' + m2[1] + '" => "' + m2[2] + '"');
}
我得到的结果:
"a" => "xyz "
"b" => "pqr st "
"c" => "lm no p"
那么,这只能用一个正则表达式完成吗?
答案 0 :(得分:3)
<击> 撞击>
<击>使用正则表达式/(\w+):\s*([^:]+)(?=\s|$)/g
请参阅 this demo 。
击><击> 撞击>
要修剪空白字符,请使用正则表达式使用正则表达式
<击> 撞击>
<击>/(\w+):\s*([^:]*\S)\s*(?=\w+:|$)/g
请参阅 this demo 。
击><击> 撞击>
/\b(\w+):\s*([^:]*\S)\b\s*(?=\w+:|$)/g
请参阅 this demo 。
答案 1 :(得分:2)
你可以试试这个
var s = 'a: xyz b: pqr st c: lm no p';
var r = /(?:\s|^)(\w+):\s*(.*?)(?=\s+\w+:|$)/g;
var m;
while ((m = r.exec(s))) {
console.log('"' + m[1] + '" => "' + m[2] + '"');
}
答案 2 :(得分:0)
正则表达式:
/(?:.(?!(?:a|b|c):))+\w/g