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>

\bword 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 用于匹配除逗号分隔的数字之外的所有字符的主要内容,如果未能解决你的问题,请参考以下文章

.NET Regex 用于后跟一些逗号分隔数字的指令

从字符串中删除非数字字符(不包括句点和逗号)(即删除除数字、逗号和句点之外的所有字符)

RegEx(在 JavaScript 中查找/替换) - 匹配非字母数字字符但忽略 - 和 +

正则表达式匹配除 5 之外的所有数字字符

RegEx表示字符串中的N个空格

什么正则表达式将匹配除逗号','或分号';'之外的每个字符?