繁体   English   中英

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

[英]RegEx match two or more same character non-consecutive

如何获得匹配任何包含两个或更多逗号的字符串的正则表达式?
我想这可以通过一个应该匹配什么和不应该匹配的示例来更好地解释

abcd,ef // Nop
abc,de,fg // Yup

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

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

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

/,[^,]*,/

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

/,.*?,/

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM