Javascript RegExp获取由冒号分隔的键值对中的文本

Javascript RegExp获取由冒号分隔的键值对中的文本,javascript,regex,Javascript,Regex,这里有我的Regexp示例: 对于以下字符串: 按键1:一些文本,可能是逗号,以分号结尾;关键字2:可能没有结尾分号的文本,但可以是 我想做如下工作: var regEx_attrVal = /[\w :].*?(?=;|$)/g; var results = attrs.match(regEx_attrVal); for(i=0;i<results.length;++i) { var split = results[i].split(':');

这里有我的Regexp示例:

对于以下字符串:

按键1:一些文本,可能是逗号,以分号结尾;关键字2:可能没有结尾分号的文本,但可以是

我想做如下工作:

var regEx_attrVal = /[\w :].*?(?=;|$)/g;
var results = attrs.match(regEx_attrVal);
      for(i=0;i<results.length;++i) {
        var split = results[i].split(':');

        preColon = split[0].trim();
        postColon = split[1].trim();

        //log preColon and postColon to console

      }
我的regexp肯定是错的,希望SO社区能提供帮助


谢谢

您需要添加一个
g
修饰符

如果regex不是强制性的,那么请尝试

var input = "key_1: some text, maybe a comma, ending in a semicolon; key_2: text with no ending semicolon";
var keyValues = input.split(";");
keyValues.forEach( function(val){
  var keyValue = val.split( ":" );
  alert( "precolon " + keyValue[0] );
  alert( "postcolon " + keyValue[1] );
});

这个正则表达式应该为您提供以下技巧:

/(\w+):([^;]*)/g

以下是一种提取这些值的正则表达式方法:

/(\w+):\s*([^;]*)/gi
或(标识符应以
或字母开头):

这是一个

var re=/([\u a-z]\w*):\s*([^;]*)/gi;
var str='key_1:一些文本,可能是逗号,以分号结尾;键2:没有结尾分号的文本';
while((m=re.exec(str))!==null){
document.body.innerHTML+=m[1]+”:“+m[2]+”
”;
}
Try,无需拆分。只需访问组1和组2。@WiktorStribiżew nice!你为我节省了时间和挫折-谢谢@WiktorStribiżew-请回答是的,因为这就是问题的答案。我希望我也能标记gurvinder372的答案,因为它也解决了问题,尽管你的答案与如何在Regex中实现的帖子直接相关。在处理类似1000个这样的查询时,您知道正则表达式和拆分方法的性能差异吗?至于性能,唯一的方法是测试。不仅是
/g
,OP-regex还可以匹配空白字符串。@gurvinder372这同样很好地解决了问题-谢谢!此外,这对我来说要容易得多,因为此时我对正则表达式感到迷茫(我希望我有更多的时间来学习它)。在处理1000个这样的查询时,您知道使用正则表达式方法和拆分方法的性能差异吗?@RonI很乐意提供帮助:)
/(\w+):\s*([^;]*)/gi
/([_a-z]\w*):\s*([^;]*)/gi