【问题标题】:How to make validation username using preg_match?如何使用 preg_match 验证用户名?
【发布时间】:2018-07-14 20:11:48
【问题描述】:

我想创建一个preg_match 函数来验证我的用户名,我下面的代码无法正常运行,尤其是在Must contain at least 4 letter lowercase 规则和number not more than 4 character and place behind letter

if (preg_match('/^[a-z0-9]{4,12}/', $_POST['username']))

这是我想要使用的用户名规则:

  • 只包含字母和数字,数字不是必需的
  • 必须至少包含 4 个小写字母
  • 数字不超过 4 个字符并放在字母后面
  • 必须是 4-12 个字符

感谢您提供的任何帮助。

【问题讨论】:

  • 请允许网站停止强迫我遵守我的用户名的任意规则。
  • 告诉我们;什么没有按照您想要的方式工作?您目前得到什么结果,而不是预期的结果?你没有描述问题。
  • 我们不会读心术,请记住,以防您还在这里。我自己已经离开了,因为不清楚你在问什么。
  • 看看stackoverflow.com/a/19605207/4333555,这不是您的要求,但它可以引导您到达那里。也不要忘记关闭锚。
  • @chris 嘿,陌生人,好久不见。希望一切顺利,干杯(我只是重温了这篇文章,看看是否还有任何更新/cmets)。唉,没有。

标签: php regex


【解决方案1】:

你符合这些条件,也许这将是一个选项:

^[a-z](?=(?:[a-z]*\d){0,4}(?![a-z]*\d))(?=[a-z\d]{3,11}$)[a-z\d]+$

这将匹配

  • 从字符串^的开头
  • 匹配小写字符[a-z]
  • 积极的前瞻(?= 断言接下来的内容是
    • 非捕获组(?:
    • 将匹配小写字符零次或多次后跟数字[a-z]*\d
    • 关闭非捕获组并重复 0 到 4 次 ){0,4}
    • 否定的前瞻 (?! 断言后面的不是
    • 小写字符零次或多次后跟数字[a-z\d]*
    • 关闭负前瞻)
  • 关闭正向前瞻)
  • 正向前瞻(?= 断言接下来是
    • 匹配小写字符或数字 3 到 11 次直到字符串结尾 (?=[a-z\d]{3,11}$)
  • 关闭正向前瞻)
  • 匹配小写字符或数字直到字符串[a-z\d]+$ 的结尾

Out php example

【讨论】:

    【解决方案2】:

    正则表达式^[a-z]{4,8}[0-9]{0,4}$|^[a-z]{4,12}$

    详情:

    • ^ 在行首断言位置
    • $ 在行尾断言位置
    • [] 匹配列表中存在的单个字符
    • {n,m} 匹配 nm
    • |或者

    PHP 代码

    $strings=['testtesttest', 'testtesttestr', 'test12345', 'testtest1234', 'testte123432'];
    
    foreach($strings as $string){
        $match = preg_match('~^[a-z]{4,8}[0-9]{0,4}$|^[a-z]{4,12}$~', $string);
        echo ($string . ' => len: (' . strlen($string) . ') ' .($match ? 'true' : 'false')."\n");
    }
    

    输出:

    testtesttest => len: (12) true
    testtesttestr => len: (13) false
    test12345 => len: (9) false
    testtest1234 => len: (12) true
    testte123432 => len: (12) false
    

    Code demo

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-29
      • 2016-09-06
      • 1970-01-01
      • 2011-03-23
      相关资源
      最近更新 更多