如何获得匹配任何包含两个或更多逗号的字符串的正则表达式?
我想这可以通过一个应该匹配的内容和不应该
abcd,ef // Nop
abc,de,fg // Yup
// This is what I have so far, but it only matches consecutive commas
var patt = /\,{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