You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP正则表达式构建:含指定字符范围且排除特定字符

正则表达式整合解决方案

针对你需要的三个检测要求,正确的整合正则表达式如下:

preg_match("/^(?=.*[\/.@])[^=*_xyz]{10,}$/", $string);

正则规则拆解

  • ^ 和 $:锚定字符串的开头和结尾,确保正则匹配整个字符串,而非部分内容
  • (?=.*[\/.@]):正向肯定预查,强制要求字符串中至少包含 /、.、@ 中的任意一个(.* 用来匹配符号前的任意字符,保证符号可以出现在字符串任意位置)
  • [^=*_xyz]{10,}:匹配10个及以上的合法字符,[^=*_xyz] 表示排除 =、*、_、x、y、z 这些禁用字符,{10,} 保证长度至少为10

测试验证

符合要求(返回1)

  • $string1 = "Mega/lodon";:长度达标,包含/,无禁用字符
  • $string2 = "Megalo.don";:长度达标,包含.,无禁用字符
  • $string3 = "Me@galo/doing";:长度达标,包含@和/,无禁用字符

不符合要求(返回0)

  • $string4 = "Meg@loz=on";:包含禁用字符z和=
  • $string5 = "Meglo*don";:包含禁用字符*
  • $string6 = "Megzlodonx";:包含禁用字符z和x
  • $string7 = "=egalodoing";:包含禁用字符=

你之前尝试的问题

你的正则 /[a-zA-Z]{10,}.[\/.@]?.[^=*xyz]/ 存在几个问题:

  1. 没有锚定开头结尾,可能只匹配字符串的一部分,而非整个内容
  2. 用 .[\/.@]?. 的写法无法确保必须包含指定符号,? 表示可选,会漏掉必须包含的要求
  3. 没有覆盖所有禁用字符(漏掉了_),且字符类的组合逻辑混乱,无法正确限制整个字符串的字符范围

内容的提问来源于stack exchange,提问作者Ricardo Castañeda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 18:22:38