1 #valid
1,5 #valid
1,5, #invalid
,1,5 #invalid
1,,5 #invalid
#'nothing' is also invalid
用逗号分隔的数字可以是任意的。
我试图使用正则表达式来执行此操作。这是我到目前为止所尝试过的,但没有一个有效:
"1,2,," =~ /^[[\d]+[\,]?]+$/ #returned 0
"1,2,," =~ /^[\d\,]+$/ #returned 0
"1,2,," =~ /^[[\d]+[\,]{,1}]+$/ #returned 0
"1,2,," =~ /^[[\d]+\,]+$/ #returned 0
显然,我需要表达式来识别1,2,,
无效,但它们都返回0
:(
答案 0 :(得分:3)
你的模式并没有真正起作用,因为:
^[[\d]+[\,]?]+$
- 匹配包含一个或多个数字+
,,
,?
字符的行(并匹配上面的所有字符串,但最后一个空字符串) ^[\d\,]+$
- 匹配由1位数字或,
符号^[[\d]+[\,]{,1}]+$
- 匹配包含一个或多个数字的行,+
,,
,{
和}
字符^[[\d]+\,]+$
- 匹配包含一个或多个数字+
和,
字符的行。基本上,问题是您尝试依赖字符类,而您需要分组构造(...)
。
逗号分隔的整数可以用
验证/\A\d+(?:,\d+)*\z/
请参阅Rubular demo。
<强>详情:
\A
- 字符串开头\d+
- 1+位数(?:,\d+)*
- 零次或多次出现:
,
- 逗号\d+
- 1+位数\z
- 字符串结束。