2

作为前言,我意识到还有其他关于用逗号分隔数字的正则表达式的主题,但是当我尝试使用这些解决方案时,它们不起作用。

基本上,我正在尝试创建一个正则表达式来识别逗号分隔的数字(在这种情况下没有空格)。在尝试将其转换为实际的正则表达式语法之前,我意识到它可能应该像这样工作,其中 'd' 是一个数字,',' 是一个逗号,而 '+' 是一个 kleene plus:

((d+),)*(d+)

或者

(d+)(,(d+))*

这是我在 Apex 验证中使用的代码,以确保某个字段是由逗号分隔的数字列表,不带空格(注意:我尝试了几种变体但无济于事,但只会发布一个):

(\d+,)*(\d+)

出于某种原因,这不起作用,但它似乎是任何数字 1 次或更多次后跟单个逗号的正确语法,并且整个表达式可以重复 0 次或更多次,并且整个重复表达式应该始终是后跟至少 1 位数字。

这个表达式在实践中确实可以识别所有接受的形式(例如:100 或 100,200 等),但由于某种原因,它也接受类似的答案

'100,200,'

或者

'100,200,,'

或者

'100,,200'

我很困惑为什么这不会像以前给出的解决方案那样有效,这些解决方案似乎和我做的一样。提前感谢您的帮助!

4

2 回答 2

4

就是这样:

^(\d+,)*\d+$

锚点^$会有所不同,因为它们会强制整个字符串(不仅仅是一部分)与模式匹配

于 2012-07-26T15:52:55.857 回答
2

你应该尝试这样的模式:

^(?:(\d+),)+(\d)+$
于 2012-07-26T15:28:07.047 回答