首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数字的Regex表达式验证

数字的Regex表达式验证
EN

Stack Overflow用户
提问于 2013-04-05 10:59:18
回答 5查看 162关注 0票数 0

这个regex表达式验证了下面的情况:

正确输入:

  1. 12345678,12345678
  2. *空间* 12345678,12345678,12345678,12345678
  3. 12345678 12345678*空间*
  4. 12345678
  5. *空间*12345678,
  6. 12345678

结果:返回true(regex表达式在上述情况下正常工作)。

输入错误:

  1. 1234567812345678

结果:返回true (应该是false)

对于错误的输入,它应该返回false,但它返回true。我应该做些什么来验证错误的输入?

代码语言:javascript
复制
   var validate_commas = /^(\s*\d{8}\s*[,]?\s*)*$/;

谢谢

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2013-04-05 16:02:11

有关您的问题为何含糊不清以及如何影响您得到的答案的更多详细信息,请参见description中的歧义。

我假定空间(ASCII 32)是任意允许的:

  • 在字符串的开头
  • 在字符串的末尾
  • 逗号前后。

我假设您希望不允许水平制表符、新行、回车和\s,并且只允许自由指定空格(ASCII 32)。

具有上述假设的BNF语法是:

代码语言:javascript
复制
<DIGIT>  ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9"
<NUMBER> ::= <DIGIT> {8}
<SPACE>  ::= " "
<TOKEN>  ::= <SPACE>* <NUMBER> <SPACE>*
<LIST>   ::= <TOKEN> ( "," <TOKEN> )* [ "," <SPACE>* ]

有了上面的语法,很容易编写regex解决方案:

代码语言:javascript
复制
var regex = /^ *\d{8} *(?:, *\d{8} *)*(?:, *)?$/;

描述中的歧义

与其像建议的那样显示要匹配的字符串示例,不如为输入指定语法。例子可能不包括所有的案例,而且回答者通常假设“不关心”,或者为这些例子中没有说明的案例提供一些假设。

票数 2
EN

Stack Overflow用户

发布于 2013-04-05 11:03:37

删除可选逗号有帮助吗?

代码语言:javascript
复制
var validate_commas = /^(\s*\d{8}\s*)(,\s*\d{8}\s*)*,?$/;

如果没有更清晰的信息,这是最好的做法,不需要做更多的假设.会不会只有一个数字而没有逗号?

票数 0
EN

Stack Overflow用户

发布于 2013-04-05 11:57:12

这应该能行

代码语言:javascript
复制
var validate_commas = /^(\s*\d{8}\s*(?:$|,\s*))*$/;

它将接受8个数字字符的一个或多个实例,后面跟着字符串或另一个逗号的结尾。

或者,如果不希望表达式匹配空行,请将最后一个量词改为一个或多个字符:+

代码语言:javascript
复制
var validate_commas = /^(\s*\d{8}\s*(?:$|,\s*))+$/;

将对以下输入返回

代码语言:javascript
复制
12345678,12345678,12345678
*space*12345678 , 12345678 , 12345678 , 12345678
12345678,12345678,*space*
12345678
*space*12345678,
12345678,

将对以下输入返回false

代码语言:javascript
复制
1234567812345678
sdsdsfsd
12345678, 12345678 12345678

我希望这能帮到你。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15832155

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档