我有一个要应用验证的输入。用户可以键入任何用逗号分隔的整数(正数或负数)。我想
允许的输入的一些示例:
1,2,3
-1,2,-3
3
4
22,-33
禁止输入的一些示例:
1,,2
--1,2,3
-1,2,--3
asdas
[]\%$1
我对regex有点了解,我尝试了很多方法,但它们的效果不是很好see this inline regex checker:
^[-|\d][\d,][\d]
答案 0 :(得分:4)
您可以使用
^(?:-?[0-9]+(?:,(?!$)|$))+$
https://regex101.com/r/PAyar7/2
-?
-带可选的-
[0-9]+
-重复数字(?:,(?!$)|$))
-在数字之后,用逗号或字符串末尾匹配。匹配逗号时,请确保您不在(?!$)
答案 1 :(得分:3)
根据您的要求,我会使用类似
的简单内容^-?\d+(?:,-?\d+)*$
后跟(?:,-?\d+)*
和一个quantified non capturing group,其中包含逗号,后跟一个可选的连字符,后跟一个或多个数字,直到$
结束。
See your updated demo at regex101
另一种可能难以理解的方法可能效率较低:
^(?:(?:\B-)?\d+,?)+\b$
quantified non capturing group包含另一个可选的非捕获组,其连字符前面带有非单词边界,后接1个或多个数字,后跟可选的连字符逗号。
\b
在$
端的word boundary确保字符串必须以 word字符结尾(只能是数字)这里)。
您可以测试此here at regex101