2013-04-11 187 views
0

空字段我有一个现有的正则表达式:正则表达式 - 表单验证

/^(\d*)(\.(\d*))?$|^$/ 

如何添加/修改空字段的检查 - (\ S *)这样做呢? - 试图学习正则表达式,做了一个搜索,但没有找到合适的资源。

+1

您现有的正则表达式已经是多余的,因为第一个分支已经允许空输入('*'允许零,'?'使另一片可选)... – 2013-04-11 20:06:01

+2

你有很多的问题,并没有公认的答案.. 。 – mihai 2013-04-11 20:08:30

回答

0

首先,你|^$部分是多余的。但是,如果你想禁止的空场,你可以改为尝试这个办法:如果你想忽略开头和结尾的空白

/^\d*\.?\d+$/ 

,试试这个:

/^\s*\d*\.?\d+\s*$/ 

你的措辞有点不清楚,所以让我知道如果这不是你想要做的。

+0

我试图验证价格域 - 它不应该允许空格,字母和负值 - 应该允许数字,逗号和小数点 - 没有解决方案在这里的工作 - – user1022521 2013-04-11 20:44:10

0

所以,你的正则表达式表示:从一开始就

匹配 -^- 零个或多个数字 - \ d * - ,也许是后面跟着一个点和零个或多个数字 - ((\ d *))? - 没有任何事后 - $,字符串结束。或 - - - 匹配字符串的开始,然后是字符串的结尾 -^$ - 。

你有什么要修改它的最后一部分。取而代之的^$,你可以匹配^\s*$,即读作“的字符串的开头,后跟零个或多个空格,以及字符串的结尾匹配”。所以它与前面的条件(零空白表示从头到尾)以及新条件(带有一些空格)相匹配。

希望它有助于更​​好地理解正则表达式。不幸的是,我不知道RegExp有什么好的资源,我只是使用MDN

+0

/^(\ d *)(\( \ d *))?$ |^\ s * $/- 所以这个不验证字段中的空值,也是这个正则表达式阻止(,)..它不允许使用逗号 – user1022521 2013-04-11 20:22:00

+0

'/ ^(\ d *)(\。(\ d *))?$ |^\ s * $ /。test(“”)=== true',所以它匹配空值,前面没有:'/ ^(\ d *)(\。(\ d *))?$ |^$ /。test(“”)=== false'。关于逗号,我只是修改了正则表达式,一步一步地解释,所以它的行为与前面的逗号相同 - 它不会验证逗号;以前没有,问题没有提到他们。我只是回答了试图解释如何阅读正则表达式的答案。 – ZER0 2013-04-11 20:26:16

0

您是否尝试过使用www.debuggex.com以帮助您与您的正则表达式?我认为这是你正在寻找的正则表达式:

^(?:(\d*)(?:\.(\d*))?|\s*)$ 

它会匹配一个浮点数或一些空白。请注意,浮点数可以被奇怪地格式化。例如,0000.10会匹配。