匹配正则表达式的地址部分

时间:2018-12-14 16:28:17

标签: javascript regex

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

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

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

如果在此之后还有其他内容,例如数字,特殊字符等,我仍然需要它才能验证为真。例如,这两个都应成功验证。 123 Main street #23 NW123 Main street NW #23

我该怎么做?

2 个答案:

答案 0 :(得分:0)

您可以使用此

^\d+\s+(?=.*[a-zA-Z]).*$
  

说明

  • ^-字符串的开头。
  • \d+-匹配一个或多个数字。
  • \s+-匹配一个或多个空格。
  • (?=.*[a-zA-Z])-匹配字母。(强制至少一个字母的条件)
  • .*-匹配除换行符以外的所有内容。
  • $-字符串结尾。

Demo

答案 1 :(得分:0)

我会这样:

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

我在第一部分中包括了数字的可能性,因为我记得我住在一条名为11th street的街道上,并且在地址的第二部分中添加了点的可能性,以使用快捷方式{{ 1}}。

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

以下是一些详细信息:

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