You need to enable JavaScript to run this app. 如何使用preg_match()检测字符串特殊字符(仅允许字母数字的姓氏校验)
优惠活动
大模型
产品
解决方案
定价
更多

如何使用preg_match()检测字符串特殊字符(仅允许字母数字的姓氏校验)

PHP用户姓氏合法性校验的正则实现方案

校验规则要求

待检测的姓氏字符串仅可包含字母、数字,不允许出现任何特殊字符(包括@、#、$、^、&、*、(、)等各类常见特殊符号),一旦检测到字符串中存在非法字符,需要弹出错误提示,并跳转至对应成员管理页面。

核心正则编写

检测特殊字符不需要逐一罗列所有特殊字符,通过PCRE正则的取反规则即可覆盖所有非字母、非数字的字符场景,可直接使用的正则表达式为:
/[^a-zA-Z0-9]/

  • 正则中[^a-zA-Z0-9]的含义是:匹配所有不在小写字母、大写字母、数字取值范围之内的任意字符
  • 正则前后的/是PHP PCRE正则要求的定界符,编写时不可遗漏,否则会触发正则语法报错

补全后的完整可运行代码

// 匹配非法特殊字符的正则
$specialCharacterRegex = '/[^a-zA-Z0-9]/';

if(preg_match($specialCharacterRegex, $last_name, $match)){
    echo ("<script LANGUAGE='JavaScript'>
    window.alert('Invalid last name. Please check, make sure no special characters are included');
    window.location.href='./../MEMBERS/members.php';
    </script>");
    // 终止后续脚本执行,避免跳转逻辑失效
    exit;
}

实现注意要点

  • 不要将特殊字符逐一罗列到正则匹配规则中,取反规则的校验覆盖范围更全面,不会出现漏判特殊字符的问题
  • 输出完JS弹窗、跳转代码后,必须调用exit终止PHP进程,否则后端会继续执行后续业务逻辑,导致前端页面跳转无法正常生效
  • 该正则可完全覆盖题目列举的所有特殊符号场景,不需要额外调整匹配规则;如果页面面向中文用户,可将弹窗的英文提示替换为中文内容,优化交互体验

内容的提问来源于stack exchange,提问作者John Doe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.28 00:36:04