2012-02-28 69 views
0

什麼是正確的Javascript RegExp驗證以下字符串「900 - 09 999」 該字符串應該只允許數字從0到9,連字符和空格。RegExp驗證字符串「900 - 09 999」

在此先感謝

+4

這是一種基本的正則表達式技巧,您可以通過閱讀幾個基本示例並激活正則表達式編輯器來獲取這些技能。 http://www.regular-expressions.info/和http://rubular.com/ – pduersteler 2012-02-28 12:51:03

+0

當告訴我們它應該驗證什麼時,請更精確 - 字符串是否包含引號?連字符是否需要在那裏?如果用戶丟棄或增加空間會怎麼樣?如果他們複製並粘貼選項卡而不是某個空間的空間?在開始或結束時允許空格嗎?如果它非常接近,但不是確切的,你想重新格式化它嗎? – 2012-02-28 13:02:05

回答

1

當你解釋你想要你的正則表達式驗證什麼東西是準確的。空格和連字符是否可選?這件事很重要。無論如何,這驗證了嚴格的格式:

"\d{3} \- \d{2} \d{3}" 

這一個不太嚴格的一個:如果您使用

"\d{3} ?\-? ?\d{2} ?\d{3}" 
+0

Thx。克勞斯!是的,空格和連字符是可選的。 – Manu 2012-02-28 12:58:03

0

這樣的:

inputField.value = inputField.value.replace(/\s*(\d\d\d)\s*-?\s*(\d\d)\s*(\d\d\d)\s*/, "$1 - $2 $3") 

...它應該既鬆散的驗證和重新格式化該值,如果它不完全匹配。

分解,表達執行以下操作:

\s*   # match any amount of whitespace 
(\d\d\d)  # capture three digits 
\s*   # match any amount of whitespace 
-?   # match an optional hyphen 
\s*   # match any amount of whitespace 
(\d\d)  # capture two digits 
\s*   # match any amount of whitespace 
(\d\d\d)  # capture three digits 
\s*   # match any amount of whitespace 
  • match意味着找到了一組表達
  • capture意味着找到匹配匹配的字符,但存儲匹配後使用
  • whitespace可以是空格,製表符或回車符
  • any amount可以表示零或mor e
+0

Thx。代碼賽馬會! – Manu 2012-02-28 13:26:10