¥
立即购买

PHP正则表达式生成器

0 浏览
0 试用
0 购买
Dec 10, 2025更新

本提示词专为PHP开发场景设计,能够根据用户指定的数据类型生成精准的正则表达式验证模式。通过系统化的需求分析和多维度验证,确保生成的正则表达式具备高准确性和实用性。提示词采用分步工作流程,从需求理解到模式构建,再到测试验证,全面覆盖正则表达式开发的关键环节,帮助开发者快速获得可靠的数据验证解决方案。

正则表达式模式

$pattern = '/^(?:(?:\+86|0086)[ -]*)?1[3-9](?:[ -]?\d){9}$/';

模式说明

  • ^ 和 $:整串匹配,避免局部命中。
  • (?:(?:+86|0086)[ -]*)?:
    • 可选的国家码前缀,只允许“+86”或“0086”两种形式;
    • 前缀后允许有任意数量的空格或短横作为分隔。
  • 1[3-9]:
    • 国内手机号主体以“1”开头,第二位限定为 3-9,符合“号段限定13-19开头”的要求。
  • (?:[ -]?\d){9}:
    • 后续共 9 个数字,每个数字前允许有 0 或 1 个空格/短横分隔符;
    • 连同前面的“1[3-9]”,主体共计 11 位数字。

该模式确保:

  • 主体数字总计严格为 11 位(不包含国家码前缀与分隔符)。
  • 可选国家码仅限 +86 或 0086。
  • 允许在国家码与主体之间、以及主体数字之间使用空格或短横作为分隔。
  • 不允许其它字符或多余位数。

使用示例

function isValidCnMobile(string $input): bool {
    $pattern = '/^(?:(?:\+86|0086)[ -]*)?1[3-9](?:[ -]?\d){9}$/';
    return (bool)preg_match($pattern, $input);
}

// 示例
$tests = [
    '13800138000',
    '+8613800138000',
    '+86 138 0013 8000',
    '+86-138-0013-8000',
    '0086 178 1234 5678',
    '0086-13-800138000',
    '8613800138000',      // 无效:缺少 + 或 00 的前缀形式
    '12800138000',        // 无效:第二位不是 3-9
    '1380013800',         // 无效:不足 11 位
    '138001380001',       // 无效:超过 11 位
    '+86 -- 13800138000', // 有效:前缀后允许多个分隔符
];

foreach ($tests as $s) {
    printf("%-20s => %s\n", $s, isValidCnMobile($s) ? 'valid' : 'invalid');
}

测试用例

  • 期望匹配(valid)

    • 13800138000
    • +8613800138000
    • +86 138 0013 8000
    • +86-138-0013-8000
    • 0086 178 1234 5678
    • 0086-13-800138000
    • +86--13800138000
  • 期望不匹配(invalid)

    • 8613800138000(未使用 +86/0086,仅“86”不被允许)
    • 12800138000(号段不在 13-19)
    • 1380013800(不足 11 位)
    • 138001380001(超过 11 位)
    • +85 13800138000(错误国家码)
    • +86 11800138000(第二位为 1,非法)
    • +86_13800138000(使用了非法分隔符“_”)

注意事项

  • 分隔符仅允许空格或 ASCII 短横号(-)。不支持制表符、全角空格、长破折号等其它字符。
  • 若需要容忍多于一个连续分隔符出现在主体数字之间,可将主体部分中的 [ -]? 改为 [ -]*,但建议保持 [ -]? 以降低回溯并避免输入中出现过多分隔符造成的混乱。
  • 若可能存在首尾空白,建议先对输入进行 trim() 后再验证。
  • 本模式使用基础 PCRE 语法,兼容常见 PHP 版本;未使用多行/Unicode 特性,无需额外修饰符。
  • 如果需要进一步严格到具体运营商号段,请在 1[3-9] 处替换为更精细的子模式,但要兼顾新号段的持续扩展,避免过度收紧导致误拒。

正则表达式模式

$pattern = '/^(?!.*(?i:password))(?!.*(.)\1\1)(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{12,}$/';

模式说明

  • ^ 和 $:严格从字符串起始到结束匹配,防止前后多余字符。
  • (?!.*(?i:password)):
    • 负向前瞻,禁止出现子串“password”(大小写不敏感,仅该子模式内启用 i 标志,不影响整体大小写要求)。
  • (?!.*(.)\1\1):
    • 负向前瞻,禁止任意三个相同字符的连续出现(如 aaa、111、@@@ 等),区分大小写。
  • (?=.*[A-Z]):至少一个大写字母。
  • (?=.*[a-z]):至少一个小写字母。
  • (?=.*\d):至少一个数字。
  • (?=.[!@#$%^&]):至少一个特殊字符,限定在集合 ! @ # $ % ^ & * 之内。
  • [A-Za-z\d!@#$%^&*]{12,}:
    • 仅允许大小写字母、数字与上述8种特殊字符;
    • 长度至少 12;
    • 自然排除了空白字符与其他未列出的符号(从而满足“禁止空白”与“仅允许指定特殊字符”)。

该模式使用的是 PCRE,适用于 PHP 7.x 与 8.x 的 preg 系列函数。

使用示例

<?php
$pattern = '/^(?!.*(?i:password))(?!.*(.)\1\1)(?=.*[A-Z])(?=.*[a-z])(?=.*\d)(?=.*[!@#$%^&*])[A-Za-z\d!@#$%^&*]{12,}$/';

$inputs = [
    'Aa1!Aa1!Bb2@',     // 合规
    'Abcdef1!Ghij',     // 合规
    'Mx8@tY7!abcD',     // 合规
    'N0$RepeatGood!',   // 合规
    'short1!Aabc',      // 不合规:长度不足
    'NoSpecialChar12',  // 不合规:缺少指定特殊字符
    'nosupper1!abcdefgh', // 不合规:缺少大写字母
    'NOSLOWER1!ABCDEF', // 不合规:缺少小写字母
    'PassWord123!',     // 不合规:包含“password”(大小写不敏感)
    'AAAa1!aaaaaa',     // 不合规:存在连续3个相同字符“AAA”
    'abcABC123!!!',     // 不合规:存在连续3个相同字符“!!!”
    'GoodPwd1?Abcdef',  // 不合规:包含未允许的特殊字符“?”
    "Has space1!A",     // 不合规:包含空格(未允许)
];

foreach ($inputs as $pwd) {
    $ok = preg_match($pattern, $pwd) === 1;
    printf("%-20s => %s\n", $pwd, $ok ? 'VALID' : 'INVALID');
}

测试用例

  • 期望匹配成功:
    • Aa1!Aa1!Bb2@
    • Abcdef1!Ghij
    • Mx8@tY7!abcD
    • N0$RepeatGood!
  • 期望匹配失败(原因示例):
    • short1!Aabc(长度不足)
    • NoSpecialChar12(缺少特殊字符)
    • nosupper1!abcdefgh(缺少大写字母)
    • NOSLOWER1!ABCDEF(缺少小写字母)
    • PassWord123!(包含“password”,大小写不敏感)
    • AAAa1!aaaaaa(连续3个相同字符)
    • abcABC123!!!(连续3个相同字符)
    • GoodPwd1?Abcdef(含未允许的“?”)
    • Has space1!A(包含空白)

注意事项

  • 特殊字符白名单:仅允许使用 ! @ # $ % ^ & 。如需扩展,请将新增字符加入字符类 [!@#$%^&] 与末尾的允许集合中,并正确转义-, ^, ] 等在字符类内有特殊意义的字符。
  • 大小写判定为 ASCII 范围。如果需要支持非 ASCII 的大小写字母(如带重音的拉丁字母),需考虑使用 Unicode 属性类并加上 u 修饰符,同时调整大小写检测逻辑(例如使用 \p{Lu}、\p{Ll}),但这超出了当前需求。
  • “不得含 password”采用大小写不敏感匹配,仅针对字面子串 password(不含变体如 passw0rd)。
  • 性能说明:该模式为线性复杂度的多前瞻组合,已锚定并限制字符集合,避免了灾难性回溯。适用于常规表单验证场景。
  • 在高并发环境中,建议先用 strlen() 做基本长度检查再调用正则,可微幅减少正则调用开销(可选优化)。

示例详情

解决的问题

把复杂的正则设计化繁为简,让AI以“PHP数据校验顾问”的身份,基于你的业务字段与规则,在一次对话内交付:高准确度的正则表达式、可直接粘贴的PHP示例代码、覆盖边界的测试用例与清晰的使用说明。帮助你在5分钟内从需求到可用校验方案,兼顾性能与安全,统一团队校验标准,减少返工与线上故障,适用于注册登录、表单提交、批量导入、数据采集、接口入参校验等高频场景。

适用用户

PHP后端工程师

在注册、登录、资料修改等表单中,快速产出合规校验规则,减少手写错误。覆盖邮箱、手机号、密码强度、链接等常见字段,直接落地到代码。

Web全栈开发者

搭建新站或重构老项目时,统一输入校验标准,避免多人风格不一致。借助示例与测试用例快速过审,显著缩短上线周期。

数据采集与清洗工程师

为数据导入与清洗流程生成稳定匹配规则,及时拦截异常数据。按业务口径设置例外,确保入库数据更干净、更可用。

特征总结

按数据类型一键生成可用正则校验,直接贴入PHP表单与服务端提交即可上线
自动识别边界与特殊字符场景,减少误判与漏判,降低回收修改成本
内置多级验证强度选项,从宽松到严格自由切换,满足注册、导入等多场景
生成同时给出使用示例与测试样例,新手亦可照抄运行,快速验证真伪
根据项目版本与执行环境自动优化写法,兼顾性能与兼容,减少线上意外
支持自定义特殊规则与例外清单,告别千篇一律,贴合你的业务口径
多维度校验报告即时呈现,指出风险点与改进建议,避免隐性安全漏洞
流程化工作方式,从需求到上线一步到位,团队协作与交付更可控更高效

如何使用购买的提示词模板

1. 直接在外部 Chat 应用中使用

将模板生成的提示词复制粘贴到您常用的 Chat 应用(如 ChatGPT、Claude 等),即可直接对话使用,无需额外开发。适合个人快速体验和轻量使用场景。

2. 发布为 API 接口调用

把提示词模板转化为 API,您的程序可任意修改模板参数,通过接口直接调用,轻松实现自动化与批量处理。适合开发者集成与业务系统嵌入。

3. 在 MCP Client 中配置使用

在 MCP client 中配置对应的 server 地址,让您的 AI 应用自动调用提示词模板。适合高级用户和团队协作,让提示词在不同 AI 工具间无缝衔接。

AI 提示词价格
¥20.00元
先用后买,用好了再付款,超安全!

您购买后可以获得什么

获得完整提示词模板
- 共 607 tokens
- 3 个可调节参数
{ 数据类型 } { 验证强度 } { 特殊要求 }
获得社区贡献内容的使用权
- 精选社区优质案例,助您快速上手提示词
使用提示词兑换券,低至 ¥ 9.9
了解兑换券 →
限时半价

不要错过!

半价获取高级提示词-优惠即将到期

17
:
23
小时
:
59
分钟
:
59