Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使preg_与用户名验证系统匹配时出现问题_Php_Regex - Fatal编程技术网

Php 使preg_与用户名验证系统匹配时出现问题

Php 使preg_与用户名验证系统匹配时出现问题,php,regex,Php,Regex,我制作了这个正则表达式代码: /^([a-zA-Z\d]+[_]?+[a-zA-Z\d]){3,12}$/ 我希望表达式: 仅允许以任何字母或数字开头/结尾 允许中间有一个低分 只有3到12个字符 当我测试一个超过12个字符的名字时,它仍然会给我一个肯定的结果 如何修复此问题?您可以使用 ^(?=.{3,12}$)[a-zA-Z\d]+(?:_[a-zA-Z\d]+)?$ 详细信息 ^-字符串的开头 (?=.{3,12}$)-允许长度为3到12个字符 [a-zA-Z\d]+-1+字母或

我制作了这个正则表达式代码:

/^([a-zA-Z\d]+[_]?+[a-zA-Z\d]){3,12}$/
我希望表达式:

  • 仅允许以任何字母或数字开头/结尾
  • 允许中间有一个低分
  • 只有3到12个字符
当我测试一个超过12个字符的名字时,它仍然会给我一个肯定的结果

如何修复此问题?

您可以使用

^(?=.{3,12}$)[a-zA-Z\d]+(?:_[a-zA-Z\d]+)?$
详细信息

  • ^
    -字符串的开头
  • (?=.{3,12}$)
    -允许长度为3到12个字符
  • [a-zA-Z\d]+
    -1+字母或数字
  • (?:u[a-zA-Z\d]+)?
    -可选的
    u
    和1+位/位序列
  • $
    -字符串结尾

因为您允许在{3,12}之前使用字符。你为什么不在正则表达式后面加上str_len()?你能发布一个演示吗?我试着跟随你去了解更多关于正则表达式的知识。你在解释每一种模式时都是传奇人物。@Yasserkalil正则表达式的演示?看,非常感谢。