首页 > 解决方案 > 匹配地址的正则表达式的一部分

问题描述

我正在编写一个带有自定义模式的表单验证器。这是正则表达式 ^d+s[A-z]+s?[A-z]*$

我想做的是匹配123 Main Street123 Main street #23

成功验证的基本要素应该是 1) 开头至少 1 个数字 2) 数字后面的空格 3) 至少 1 个代表街道名称的字母字符。

如果在那之后有任何东西,数字,特殊字符等我仍然需要它来验证为真。例如,这两个都应该成功验证。 123 Main street #23 NW或者123 Main street NW #23

我该怎么做呢?

标签: javascriptregex

解决方案


我会这样做:

^\d+\s*[0-9a-zA-Z]+\s*[a-zA-Z\.]+(?:\s*[#0-9a-zA-Z]+(?:\s*[#0-9a-zA-Z]+)?)?$

我在第一部分包括了数字的可能性,因为我记得我住在一条名为 的街道上11th street,我在地址的第二部分添加了点的可能性,以使用快捷方式Street -> St.

演示:https ://regex101.com/r/N683Xq/3/

以下是一些快速详细信息:

  • [0-9A-Za-z]用于包含任何数字或字母。
  • (?: )这是一个非捕获组。
  • ()?在 () 之后添加问号以使其可选。

推荐阅读