我正在用自定义模式编写表单验证器。这是正则表达式
^d+s[A-z]+s?[A-z]*$
我想做的是匹配123 Main Street
或123 Main street #23
成功验证的基本要素应该是 1)开头至少1个数字 2)数字后的空格 3)至少1个代表街道名称的字母字符。
如果在此之后还有其他内容,例如数字,特殊字符等,我仍然需要它才能验证为真。例如,这两个都应成功验证。
123 Main street #23 NW
或123 Main street NW #23
我该怎么做?
答案 0 :(得分:0)
您可以使用此
^\d+\s+(?=.*[a-zA-Z]).*$
说明
^
-字符串的开头。\d+
-匹配一个或多个数字。\s+
-匹配一个或多个空格。(?=.*[a-zA-Z])
-匹配字母。(强制至少一个字母的条件).*
-匹配除换行符以外的所有内容。$
-字符串结尾。答案 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]
这是一个非捕获组。(?: )
在()之后添加问号,以使其成为可选内容。