簡體   English   中英

用於驗證地址的 JavaScript 正則表達式

[英]JavaScript Regular Expression to validate an address

我正在嘗試修改此腳本以接受 , - 和 ' 以便此正則表達式驗證表單上的地址是否正確編寫?

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

它有效,但有一些多余的轉義。

您無需轉義逗號、單引號和連字符。 僅當字符具有特殊含義並且您想按字面意思使用它時才轉義。 在 char 類中:

  • -是元字符,但不是出現在開頭或結尾時。 在你的情況下,它出現在最后,所以它失去了它的特殊意義(范圍制作)。
  • ]是一個元字符,它標志着字符類的結束。 因此,如果您想讓]成為 char 類的一部分,則需要對其進行轉義。

所以你可以把你的正則表達式寫成:

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

在評論中,Daniel Vandersluis 有一個非常好的觀點:地址不能僅通過正則表達式進行驗證。 USPS 有一個名為 CASS(編碼精度支持系統)的完整部門,專門用於驗證地址數據。 我在SmartyStreets工作,在那里我們為人們提供 CASS 認證的服務。 事實上,如果您真的對好的地址感興趣,我會親自幫助您入門(例如,使用 Javascript 真的很容易。只需要一分鍾左右。)

當您的輸入是“House No.-780”時,以上回答的正則表達式給出錯誤。 用戶可以添加“.” 到地址,因此我們必須制作也接受點的正則表達式。 您可以使用此正則表達式

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

此正則表達式接受最少三個字符,並且最大字符數沒有限制。 字符可能包括 az、AZ 字母、空格、逗號 (,)、點 (.)、撇號 (') 和破折號 (-) 符號。

如果您只想接受這些字符(或空字符串)中的任何一個,那么您可以修改您當前擁有的內容:

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM