如何用正则表达式限制地址输入:禁止三连字母、双重复符号及超限数字

陌杰大大_5912

陌杰大大_5912

2026-07-07

425人浏览

原创

如何用正则表达式限制地址输入:禁止三连字母、双重复符号及超限数字

本文提供一个健壮的正则表达式,用于校验用户输入的地址字符串,确保其不包含3个及以上连续相同字母、2个及以上连续空格或指定标点(- , . /),且总数字个数不超过5个,同时长度控制在3–50字符内。

本文提供一个健壮的正则表达式,用于校验用户输入的地址字符串,确保其不包含3个及以上连续相同字母、2个及以上连续空格或指定标点(- , . /),且总数字个数不超过5个,同时长度控制在3–50字符内。

以下是推荐使用的正则表达式:

^(?!.*  )(?!.*[-,/.]{2})(?!.*(?:[^d
]*d){6})(?!.*([a-zA-Z])).{3,50}$

✅ 各部分功能详解

  • ^ 和 $:锚定整个字符串起止,避免部分匹配;
  • (?!.* ):否定前瞻,禁止出现任意位置的两个连续空格;
  • (?!.*[-,/.]{2}):禁止任意位置出现两个连续的 -、,、. 或 /(注意:/ 在字符类中无需转义,但若用于 JS 字符串字面量需额外处理);
  • (?!.*(?:[^d ]*d){6}):确保数字总数 ≤ 5 —— 该子模式通过匹配「非数字字符(含换行)+ 一个数字」最多重复5次来实现;第6次出现即触发失败;
  • (?!.*([a-zA-Z])):禁止任意位置出现3个连续相同英文字母(如 aaa、BBB),利用捕获组  实现精确重复检测;
  • .{3,50}:限定整体长度为 3–50 个任意字符(含字母、数字、允许的符号),简洁高效。

? 测试用例验证(✅ 允许 / ❌ 禁止)

输入示例 是否通过 原因说明
Time Square, Main Road, 2279 ✅ 符合全部规则:无双空格/双标点、仅4个数字、无三连字母
Time-Square, Main Road-2279 ✅ 连字符单用,数字共4个,字母均为非重复序列
ttttttttttttttttttttttttttt ❌ t 连续出现 ≥3 次,触发 (?!.*([a-zA-Z])) 失败
Time Square Main Road ❌ 存在 `(两个空格),被(?!.* )` 拦截
Time Square,,Main ❌ , 连续两次,违反 [-,/.]{2} 限制
123456 ❌ 含6个数字,(?:[^d ]*d){6} 匹配成功 → 整体失败

⚠️ 注意事项与优化建议

  • 字符类安全:[-,/.] 中 - 放首位或末位可避免被误解析为范围符,当前写法已合规;
  • 数字计数逻辑严谨性:(?:[^d ]*d){6} 能正确统计所有数字个数(无论是否连续),例如 a1b2c3d4e5f6 也会被拒绝;
  • 性能考量:该正则使用多个独立负向先行断言,现代正则引擎(PCRE、JavaScript、Java)均可高效执行,无回溯灾难风险;
  • 实际集成提示:
    • 若在 JavaScript 中使用,请用 new RegExp("^(?!.* )(?!.*[-,/.]{2})(?!.*(?:[^\d\n]*\d){6})(?!.*([a-zA-Z])\1\1).{3,50}$"),注意反斜杠转义;
    • 建议配合前端实时校验 + 后端二次验证,防止绕过;
    • 如需支持 Unicode 字母(如中文地址中的拼音名),可将 [a-zA-Z] 替换为 p{L} 并启用 u 标志(需环境支持)。

该正则兼顾可读性、准确性和实用性,适用于地址、名称等用户自由输入字段的轻量级合规性过滤。

md2card
md2card

一款将Markdown文本转换为知识卡片的在线工具,可把结构化文字快速整理成适合阅读和分享的视觉卡片。

下载

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

正则表达式

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

2023.06.20

4556

8

正则表达式不包含
正则表达式不包含

正则表达式,又称规则表达式,,是一种文本模式,包括普通字符和特殊字符,是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式的文本。php中文网给大家带来了有关正则表达式的相关教程以及文章,希望对大家能有所帮助。

2023.07.05

3061

4

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

8482

9

java正则表达式匹配字符串
java正则表达式匹配字符串

在Java中,我们可以使用正则表达式来匹配字符串。本专题为大家带来java正则表达式匹配字符串的相关内容,帮助大家解决问题。

2023.08.11

812

5

正则表达式空格
正则表达式空格

正则表达式空格可以用“\s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。本专题为大家提供正则表达式相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

520

5

Python爬虫获取数据的方法
Python爬虫获取数据的方法

Python爬虫可以通过请求库发送HTTP请求、解析库解析HTML、正则表达式提取数据,或使用数据抓取框架来获取数据。更多关于Python爬虫相关知识。详情阅读本专题下面的文章。php中文网欢迎大家前来学习。

2023.11.13

693

12

正则表达式空格如何表示
正则表达式空格如何表示

正则表达式空格可以用“\s”来表示,它是一个特殊的元字符,用于匹配任意空白字符,包括空格、制表符、换行符等。想了解更多正则表达式空格怎么表示的内容,可以访问下面的文章。

2023.11.17

406

3

正则表达式中如何匹配数字
正则表达式中如何匹配数字

正则表达式中可以通过匹配单个数字、匹配多个数字、匹配固定长度的数字、匹配整数和小数、匹配负数和匹配科学计数法表示的数字的方法匹配数字。更多关于正则表达式的相关知识详情请看本专题下面的文章。php中文网欢迎大家前来学习。

2023.12.06

719

7

php正则表达式有哪些
php正则表达式有哪些

php正则表达式有"/pattern/"、"^"、"$"、"."、"[]"、"[^]"、"[a-z]"、"[A-Z]"、"[0-9]"、"\d"、"\D"、"\w"、"\W"、&a

2024.02.23

312

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WEB前端教程【HTML5+CSS3+JS】
WEB前端教程【HTML5+CSS3+JS】

共101课时 | 21.2万人学习

JavaScript正则表达式基础与实战
JavaScript正则表达式基础与实战

共11课时 | 1.7万人学习

布尔教育正则表达式视频教程
布尔教育正则表达式视频教程

共14课时 | 5.1万人学习