用逗号分隔字符串,但不用JavaScript转义

时间:2015-12-02 14:19:05

标签: javascript regex string split

我编写的代码用逗号分隔字符串:

"Keyword,slug,description".split(',');

这会产生类似["Keyword", "slug", "description"]

的数组

这种情况有效一段时间,直到有人在描述中需要逗号。

我知道我可以用split替换match并使用正则表达式,但我能提出的唯一正则表达式涉及负面的后观,如下所示:

"Keyword,slug,description".match(/(?<!\\),/);

不幸的是,JavaScript并不支持外观。

还有其他办法吗?

3 个答案:

答案 0 :(得分:1)

所以使用match而不是split

"Keyword,slug,description".match(/([^,]+),([^,]+),(.*)/);

将导致

["Keyword,slug,description", "Keyword", "slug", "description"]

还有其他方法来编写正则表达式,只需快速选择一些东西。

答案 1 :(得分:1)

这是一个不那么好的方式,但一般原则可以派上用场:

"keyword,slug,foo\\,bar"
.replace( '\\,', '{COMMA}' )
.split(',')
.map(function(v){return v.replace('{COMMA}',',')})

答案 2 :(得分:0)

如果您手动将字符串作为输入,则可以通过HTML实体转义逗号。

var message = 'This is a message with some comma(,) and (,) ';
message = message.replaceAll(",", "&#x2c;");
var params = 'title=Confirm,message='+message+'position=middle';
showAlert(params);

现在常规的.split方法可以使用

function showAlert(params) {
  params = params.split(","); 
  // ...
}