javascript - 匹配地址的正则表达式的一部分
问题描述
我正在编写一个带有自定义模式的表单验证器。这是正则表达式
^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
我该怎么做呢?
解决方案
我会这样做:
^\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]
用于包含任何数字或字母。(?: )
这是一个非捕获组。()?
在 () 之后添加问号以使其可选。
推荐阅读
- c++ - 使用 std::vector::swap 方法在 C++ 中交换两个不同的向量是否安全?
- google-bigquery - unnest 是否始终在 Bigquery 中按命中数的升序显示数据
- sql - SQL - 检查日期是否在数据库中
- selenium - 如何处理 IE 浏览器的 Zoom 不是 100%?
- c# - Graphql 查询:如何创建返回项目之间不同字段的查询
- maven - 将资源部署为单独的 Maven 工件
- pandas - Pandas Dataframe 未在循环中填充
- macos - QT 在 macos 上找不到连接的低功耗蓝牙设备
- sql - 这种情况如何完成加入?
- sql - 在spark SQL中查找温度变化1度的开始时间和结束时间