匹配字符串与前缀和至少一个逗号(,)

时间:2014-08-13 17:04:41

标签: regex

尝试匹配逗号分隔的值列表。 我想检查逗号','是否至少出现一次,字符串包含某个前缀

即 tel_local:123456,tel_national:123456

有效但是: tel_local:123456不是没有逗号

目前正在使用

^(tel_local:)|(tel_national:),+$

但匹配tel_local:123456

4 个答案:

答案 0 :(得分:0)

试试:

^(\w+: \d+)(?:, (\w+: \d+))*$

答案 1 :(得分:0)

要完成 ,请使用:

^tel_(?:local|national):(?=.*?,)

Demo


首先,你的主要问题是交替。想想你是否有条件(A=B OR A=C) AND Z=5。括号是必要的,以便评估顺序保持正确,与表达式中的替换((?:local|national))相同。


然后,由于你没有在tel_localtel_national(一个人会假设一个空格和数字)之后没有指定 必须来的地方 需要一个逗号,我用了一个先行断言。 (?=.*?,)将向前看0+个字符并检查,。如果未找到逗号,则断言将失败,您的匹配将结束。

答案 2 :(得分:0)

您可以使用这个基于前瞻性的正则表达式:

^(?=[^,]*,)((?:tel_local|tel_national): *\d+,? *)+$

RegEx Demo

答案 3 :(得分:0)

您需要在正则表达式中包含kleene plus(“+”),以声明某个术语应至少具有一次或多次

因此,如果要指定要匹配的字符串,则应至少包含一个逗号,例如“,+”应该执行