任何人都可以帮助我在PHP中使用正则表达式

时间:2017-01-31 11:07:06

标签: php regex preg-match

我对正则表达式知之甚少。如果我能达到以下目的,请帮帮我 用户名必须验证这一点。

  1. 仅包含字母数字字符,下划线和点
  2. 下划线和点不能在用户名的结尾或开头
  3. 下划线和点不能彼此相邻
  4. 下划线或点不能连续多次使用
  5. 我已经提出了这个正则表达式,但我无法满足以上所有要求。

    /(?<![a-z_|.])([a-z](?:[a-z]|_|.(?!_.))+[a-z]|[a-z]{2})(?![a-z_|.])/
    

    提前致谢。

2 个答案:

答案 0 :(得分:1)

你不需要任何外观。简化你的正则表达式:

/^[a-zA-Z0-9](?!(?:.*\.){2}|(?:.*_){2}|.*[._]{2})[a-zA-Z0-9_.]*[a-zA-Z0-9]$/

RegEx Demo

答案 1 :(得分:-1)

罗马的一种方式......(简单易用的版本)

if(substr_count($string,'_')<=1 //for rule 4.
    && substr_count($string,'.')<=1 //for rule 4.
    && substr_count($string,'._')===0 //for rule 3.
    && substr_count($string,'_.')===0 //for rule 3.
    && preg_match('/^[^_\.][a-zA-Z]+[^_\.]$/',$string)// for rule 1. & 2.
) {
     echo 'Valid';
}