用于匹配用逗号分隔的特定数字的正则表达式

时间:2015-02-11 19:34:20

标签: javascript regex

我有一个正则表达式,匹配数字1,7和99的任意组合,以逗号分隔。例如。这些应该匹配:

1
1,7
1,99
99,1,7

虽然这些不匹配:

1,
8
8,99
,7
1,7,99,

以下工作正常,但可能会缩短并提高效率?

/^(1|7|99)(,?(1|7|99)(,?(1|7|99))?)?$/

3 个答案:

答案 0 :(得分:2)

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

/^(1|7|99)(?!.*?,\1)(?:,(?:1|7|99))*$/gm

RegEx Demo

答案 1 :(得分:1)

/^(1|7|99)(,(1|7|99))*$/

使用rubular

上的测试用例进行测试

答案 2 :(得分:0)

修改@ RidesTheShortBus的答案对所有测试用例都很有效

^(1|7|99)(,(1|7|99){1})*$

测试here