RegEx匹配两个或多个相同的字符非连续

时间:2012-02-13 05:05:14

标签: javascript regex

如何获得匹配任何包含两个或更多逗号的字符串的正则表达式?
我想这可以通过一个应该匹配的内容和不应该

的示例来更好地解释
abcd,ef // Nop
abc,de,fg // Yup

// This is what I have so far, but it only matches consecutive commas
var patt = /\,{2,}/;

我对正则表达式不是很好,我找不到任何有用的东西。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:13)

这将匹配一个至少包含2个逗号(不是冒号)的字符串:

/,[^,]*,/

简单地说“匹配逗号,后跟任意数量的非逗号字符,后跟另一个逗号。”你也可以这样做:

/,.*?,/

.*?.*类似,但它与匹配尽可能少的字符,而不是尽可能多的。这被称为“不情愿”的资格赛。 (我希望用你选择的语言的regexps支持他们!)

有人建议/,.*,/。这是一个非常糟糕的主意,因为它总是会遍历整个字符串,而不是停留在找到的前2个逗号中。如果字符串很大,那可能会很慢。

答案 1 :(得分:1)

如果你想获得给定字符串中逗号的数量,只需使用/,/ g,并获得匹配长度

'a,b,c'.match(/,/g);    //[',',','] length equals 2<br/>
'a,b'.match(/,/g);    //[','] length equals 1<br/>
'ab'.match(/,/g)    //result is null