如何在正则表达式中安全支持括号与正斜杠的职位标题校验

冬墨吖_8329

冬墨吖_8329

2026-10-23

414人浏览

原创

如何在正则表达式中安全支持括号与正斜杠的职位标题校验

本文详解如何扩展原有正则表达式,使其合法支持英文括号 () 和正斜杠 /(禁止首尾出现),同时保留原有对字母、数字、连字符、点、单引号、空格等字符的校验逻辑,适用于“Front-end developer/designer”或“Recruitment Staff (HR)”等真实职位名称场景。

本文详解如何扩展原有正则表达式,使其合法支持英文括号 `()` 和正斜杠 `/`(禁止首尾出现),同时保留原有对字母、数字、连字符、点、单引号、空格等字符的校验逻辑,适用于“front-end developer/designer”或“recruitment staff (hr)”等真实职位名称场景。

在构建用户输入校验(如职位标题)时,需在安全性与实用性之间取得平衡。原始正则 /^[a-z0-9](?:[a-z0-9'. -]*[a-z0-9])?$/i 已能匹配以字母/数字开头结尾、中间允许部分常见符号的字符串,但无法处理 (、) 和 / —— 而这些在实际职位名中极为常见(如 "Senior DevOps Engineer (Cloud)" 或 "UX/UI Designer/Researcher")。

要安全引入新字符,关键原则是:

  • ✅ 允许 ( 和 ) 出现在任意位置(包括开头和结尾),因 "(Intern)" 或 "Manager (Contract)" 均合理;
  • ✅ 允许 / 出现在中间位置,但禁止出现在首尾(避免 "/Developer" 或 "Designer/" 等可疑格式);
  • ❌ 不破坏原有约束:仍要求非空、首尾必须为有效字符(即不能是空格、/、. 等);
  • ? 所有特殊字符必须在字符组中正确转义(\( \) 在字符组内无需反斜杠,但 / 无需转义;为清晰起见,显式写为 \/ 更佳)。

优化后的正则如下:

!preg_match("/^[a-z0-9()](?:[a-z0-9\/().' -]*[a-z0-9()])?$/i", stripslashes($post['job_title']))

✅ 说明各部分作用:

百度·度咔剪辑
百度·度咔剪辑

百度·度咔剪辑是一款由百度推出的创作 Agent 和 AI 视频剪辑工具。

下载
  • ^ 和 $:确保完整字符串匹配;
  • [a-z0-9()]:首字符必须是字母、数字或 ( / )(支持 "(", ")" 开头);
  • (?: ... )?:中间部分为可选非捕获组;
  • [a-z0-9\/().' -]*:中间可含字母、数字、/、(、)、., ', 空格、-;注意 \/ 显式转义更稳妥(尽管 / 在字符组中通常无需转义,但增强可读性与兼容性);
  • [a-z0-9()]:末字符同首字符规则,确保不以 / 或空格等结束;
  • /i:忽略大小写,适配 "Front-End" 等混合大小写场景。

⚠️ 注意事项:

  • 该正则不支持嵌套括号(如 "Role (Lead (Senior))"),若业务需深度嵌套,建议改用解析器而非正则;
  • 若需进一步限制 / 数量(如最多1个),需额外逻辑,正则本身难以优雅实现;
  • 始终配合 stripslashes() 使用前,应确认 PHP 的 magic_quotes_gpc 已禁用(现代 PHP 版本默认关闭),否则可能误删合法反斜杠;
  • 实际部署前,务必用典型用例测试边界情况:
$testCases = [
    "Front-end developer/designer",   // ✅
    "Recruitment Staff (HR)",         // ✅
    "(Intern) Full-Stack Developer",  // ✅
    "UX Designer / Researcher",       // ✅
    "/Developer",                     // ❌ 首字符为 /
    "Manager/",                       // ❌ 尾字符为 /
    "  ",                             // ❌ 空格开头结尾 → 不匹配(因首尾需为 [a-z0-9()])
];

总结:此方案在保持原有健壮性的前提下,精准扩展了对 () 和 / 的支持,兼顾语义合理性与实现简洁性,适用于绝大多数招聘系统、简历平台等场景的职位字段校验。

相关文章

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

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

下载

相关标签:

正则表达式

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

相关专题

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

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

2023.06.20

4436

8

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

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

2023.07.05

2941

4

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

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

2023.07.05

8122

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

673

12

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

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

2023.11.17

386

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.1万人学习

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

共11课时 | 1.7万人学习

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

共14课时 | 5.1万人学习