2010-09-21 29 views
2

我想修改這個腳本來接受,並且'這個正則表達式來驗證表單上的地址是否正確寫入?JavaScript正則表達式來驗證一個地址

^[a-zA-Z0-9\s\,\''\-]*$ 
+0

「它寫的是否正確?」 - 你親自嘗試過嗎? – casablanca 2010-09-21 19:41:57

+3

如果你在談論街道地址,驗證它們並不是微不足道的。地址可以以多種格式出現,即使某些地址看起來像地址,也不表示它是一個真正有效的地址(即「123 Main Street」看起來像一個地址,但可能跳過了#123或街道只有地址高達#90)。 – 2010-09-21 19:43:58

+0

無論如何,您的表達「正確」,因爲它是有效的語法,不會崩潰。但它非常不明確,並且會匹配任何只包含字母,數字,空格,逗號,單引號或破折號的字符串。 – 2010-09-21 19:45:29

回答

11

它的工作原理,但有一些多餘的轉義。

您不需要轉義逗號,單引號和連字符。只有當字符具有特殊意義並且你想從字面上使用它時,你才能逃脫。裏面一個字符類:

  • -是元字符,而不是在它 出現在開頭或結尾。 在你的情況下,它出現在末尾,因此它已經失去了其特殊含義( 範圍製作)。
  • ]是一個元字符,它標誌着char類的 結束。所以如果你想 使]字符類的一部分,你需要 轉義它。

所以,你可以寫你的正則表達式爲:

^[a-zA-Z0-9\s,'-]*$ 
+0

謝謝你的工作。 – Amen 2010-09-21 19:56:27

0

如果你只是想接受任何這些字符(或空字符串),那麼你可以修改你現在是什麼:

/^[a-z0-9\s,'-]*$/i 

這絕不是一個街道地址驗證但是。我建議你從某處學習更多關於正則表達式的知識。 http://www.regular-expressions.info/examples.html是一個很好的開始。

0

在評論,丹尼爾Vandersluis有一個非常好的點:地址不能僅通過正則表達式來驗證。 USPS有一個稱爲CASS(編碼精度支持系統)的整個部門,專門用於驗證地址數據。我爲SmartyStreets工作,我們爲人們提供CASS認證服務。事實上,如果你真的對好的地址感興趣,我會幫你個人入門(例如,用Javascript真的很簡單,只需要一分鐘左右。)

1

以上回答正則表達式給出當您的輸入是「房屋號-807」時爲假。用戶可以添加「。」到地址,所以我們必須做出接受點的正則表達式。你可以使用這個正則表達式

/^[a-zA-Z0-9\s,.'-]{3,}$/ . 

這個正則表達式接受最小三個字符,最大字符數沒有限制。字符可能包括a-z,A-Z字母,空格,逗號(,),點(。),撇號(')和破折號( - )符號。