RegEx 用于匹配除逗号分隔的数字之外的所有字符
Posted
技术标签:
【中文标题】RegEx 用于匹配除逗号分隔的数字之外的所有字符【英文标题】:RegEx for matching all chars except for comma separated digits 【发布时间】:2019-10-10 23:08:56 【问题描述】:我有一个要应用验证的输入。用户可以键入用逗号分隔的任何整数(正数或负数)。我想要
允许输入的一些示例:
1,2,3
-1,2,-3
3
4
22,-33
一些禁止输入的例子:
1,,2
--1,2,3
-1,2,--3
asdas
[]\%$1
我对正则表达式有点了解,我尝试了很多方法,它们都不是很好see this inline regex checker:
^[-|\d][\d,][\d]
【问题讨论】:
也许(?:\W|^)(-?\d+(?:,-?\d+)*)\b
对你有用,或者-?\b\d+(?:,-?\d+)*\b
【参考方案1】:
根据您的要求,我会使用一些简单的东西,例如
^-?\d+(?:,-?\d+)*$
在开头^
和optional 减去-?
后跟\d+
一个或多个digits。
后跟 (?:,-?\d+)*
quantified non capturing group 包含一个逗号,后跟一个可选连字符,后跟一个或多个数字,直到 $
结束。
See your updated demo at regex101
另一个可能更难理解的可能效率较低的一个:
^(?:(?:\B-)?\d+,?)+\b$
quantified non capturing group 包含另一个可选的非捕获组,其中一个连字符前面是 非单词边界,后跟 1 个或多个数字,后跟可选的逗号。 p>
\b
word boundary$
结尾确保字符串必须以 单词字符 结尾(此处只能是数字)。
你可以测试这个here at regex101
【讨论】:
【参考方案2】:你可以使用
^(?:-?[0-9]+(?:,(?!$)|$))+$
https://regex101.com/r/PAyar7/2
-?
- 可选-
[0-9]+
- 重复数字
(?:,(?!$)|$))
- 在数字之后,匹配逗号或字符串的结尾。匹配逗号时,请确保您不在带有(?!$)
的字符串末尾
【讨论】:
哦,好点子 - 匹配逗号后对$
的负前瞻
嗨!感谢您的出色回答。如何更改此正则表达式以允许两个数字之间有空格,如下所示:1,2, 3, -4, 5,6,7
匹配逗号后重复0个或多个空格:regex101.com/r/PAyar7/3
非常感谢!非常感谢您的帮助以上是关于RegEx 用于匹配除逗号分隔的数字之外的所有字符的主要内容,如果未能解决你的问题,请参考以下文章
从字符串中删除非数字字符(不包括句点和逗号)(即删除除数字、逗号和句点之外的所有字符)