【发布时间】:2017-09-22 13:23:08
【问题描述】:
我有以下代码sn-p:
var colorText = "red,blue,green,yellow";
var colors3 = colorText.split(/[^\,]+/);
alert(colors3); // ["", ",", ",", ",", ""]
我不明白这里发生了什么。据我了解,正则表达式将匹配字符串开头的任何逗号,并且匹配这些字符串中的一个或多个。当我们将这个正则表达式作为参数提供给split 时会发生什么?当然,如果我们只是尝试将正则表达式与colorText 匹配,我们将得不到匹配,因为起始字符不是逗号。但是提供给split 的正则表达式如何导致逗号数组和每边两个空字符串?
【问题讨论】:
-
你要分割的是什么?此外,这是一个字符组,它不是“字符串开头”,而是“所有内容,但不是逗号”,您必须将
^移出字符组以匹配字符串开头。 -
首先你的正则表达式是关闭的。 ^ 运算符将匹配除逗号之外的所有内容。您还需要添加标志 g,以便您的正则表达式看起来像这样 /[\,]+/g。这将匹配字符串中的所有逗号
-
插入符号必须在正则表达式的开头,您所做的是排除多个逗号
标签: javascript regex