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

Javascript 用于匹配由逗号分隔的特定数字的正则表达式,javascript,regex,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))?)?$/ 您可以使用基于前瞻的正则表达式: /^(1|7|99)(?!.*?,\1)(?:,(?:1|7|99))*$/gm 在上使用您的测试用例进行测试修改@rideshortbus

我有一个正则表达式,它匹配数字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))?)?$/

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

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

上使用您的测试用例进行测试修改@rideshortbus的答案一点点对所有测试用例都非常有效

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

测试

是否只需检查1、7和99?您的示例正则表达式匹配17,say@Goudgeld1是的,没错。就目前情况而言,你也会匹配DUP;1,7,7这是对的吗?@AnttiHaapala你是对的,那不是你的意图。我的上帝!你两分钟就做到了!?!?是否可以进一步限制它,使其与数字只匹配一次?(1,7,99)@anubhava我能问问你为什么把(1 | 77 | 99)和(1 | 7 | 99)放在一起吗?我喜欢!然而,像我原来的查询一样,这个也匹配,例如9911111777(它不应该匹配),您的正则表达式也匹配77,99。我稍微修改了一下
^(1 | 7 | 99)(,(1 | 7 | 99){1})*$
^(1|7|99)(,(1|7|99){1})*$