正则表达式,用于匹配除逗号分隔数字以外的所有字符

时间:2019-05-24 10:44:22

标签: javascript regex string regex-negation regex-lookarounds

我有一个要应用验证的输入。用户可以键入任何用逗号分隔的整数(正数或负数)。我想

允许的输入的一些示例:

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]

2 个答案:

答案 0 :(得分:4)

您可以使用

^(?:-?[0-9]+(?:,(?!$)|$))+$

https://regex101.com/r/PAyar7/2

  • -?-带可选的-
  • [0-9]+-重复数字
  • (?:,(?!$)|$))-在数字之后,用逗号或字符串末尾匹配。匹配逗号时,请确保您不在(?!$)
  • 的末尾

答案 1 :(得分:3)

根据您的要求,我会使用类似

的简单内容
^-?\d+(?:,-?\d+)*$
  • 在开始^optional减去-?之后是\d+一个或多个digits

  • 后跟(?:,-?\d+)*和一个quantified non capturing group,其中包含逗号,后跟一个可选的连字符,后跟一个或多个数字,直到$结束。

  • p>

See your updated demo at regex101


另一种可能难以理解的方法可能效率较低:

^(?:(?:\B-)?\d+,?)+\b$
  • quantified non capturing group包含另一个可选的非捕获组,其连字符前面带有非单词边界,后接1个或多个数字,后跟可选的连字符逗号。

  • \b$端的word boundary确保字符串必须以 word字符结尾(只能是数字)这里)。

您可以测试此here at regex101