2013-04-11 183 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會匹配。