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

RegEx for matching all chars except for comma separated digits

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

允许输入的一些示例:

1,2,3
-1,2,-3
3
4
22,-33

禁止输入的一些示例:

1,,2
--1,2,3
-1,2,--3
asdas
[]\%

我对正则表达式了解一点,我尝试了很多方法,但它们都不是很好see this inline regex checker:

^[-|\d][\d,][\d]

您可以使用

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

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

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

根据您的要求,我会使用像

这样简单的东西
^-?\d+(?:,-?\d+)*$
  • 开始 ^ 一个 optional minus -? followed by \d+ one or more digits

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

See your updated demo at regex101


另一个可能更难理解且效率较低的方法:

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

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

你可以测试这个here at regex101