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

elc*_*nrs 4 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,}/;
Run Code Online (Sandbox Code Playgroud)

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

Ale*_*x D 13

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

/,[^,]*,/

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

/,.*?,/

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

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

  • @Mark,对不起,但我发布的正则表达式更好.它会匹配任何带有2个逗号的字符串,并且效率远高于你的字符串,特别是如果字符串非常长. (2认同)