Php 具有以下条件的正则表达式

Php 具有以下条件的正则表达式,php,regex,preg-match,Php,Regex,Preg Match,我试图通过在以下条件下匹配正则表达式来理解正则表达式的工作原理: 字符串必须以一个或多个字母数字字符开头 字符串后面必须跟一个“@”符号 字符串后面必须紧跟在“@”后面的字符串“asa” 字符串后面必须跟一个包含一个或多个0和/或1的字符串 字符串后面必须跟另一个字符串@ 字符串后面必须跟有一个或多个特殊字符和/或数字的集合,不能有字母 字符串必须以“abc”结尾 我已经完成了第4步,现在我陷入了困境,我想知道是否有人可以提供一些建议: $pattern = "/^[a-zA-Z0-9@]+@+

我试图通过在以下条件下匹配正则表达式来理解正则表达式的工作原理:

  • 字符串必须以一个或多个字母数字字符开头
  • 字符串后面必须跟一个“@”符号
  • 字符串后面必须紧跟在“@”后面的字符串“asa”
  • 字符串后面必须跟一个包含一个或多个0和/或1的字符串
  • 字符串后面必须跟另一个字符串@
  • 字符串后面必须跟有一个或多个特殊字符和/或数字的集合,不能有字母
  • 字符串必须以“abc”结尾
  • 我已经完成了第4步,现在我陷入了困境,我想知道是否有人可以提供一些建议:

    $pattern = "/^[a-zA-Z0-9@]+@+[asa]+[01]/";
    $subject = "abcB123Ccac@asa01";
    echo preg_match($pattern,$subject) ? 'MATCH' : 'NO MATCH';
    

    你可以试试下面的正则表达式

    ^[A-Za-z0-9]+@asa[01]+@[^A-Za-z]+abc$
    
    代码是

    $pattern = "~^[A-Za-z0-9]+@asa[01]+@[^A-Za-z]+abc$~";
    $subject = "abcB123Ccac@asa01";
    echo preg_match($pattern,$subject) ? 'MATCH' : 'NO MATCH';
    
  • 字符串必须以一个或多个字母数字字符开头

    ^[A-Za-z0-9]+
    
  • 字符串后面必须跟一个“@”符号

    @
    
  • 字符串后面必须紧跟在“@”后面的字符串“asa”

    asa
    
  • 字符串后面必须跟一个包含一个或多个0和/或1的字符串

    [01]+
    
  • 字符串后面必须跟另一个字符串@

    @
    
  • 字符串后面必须跟一个或多个特殊字符和/或数字的集合,不包含字母(字母除外)

  • 字符串必须以“abc”结尾

    abc$
    

  • 谢谢@Avinash Raj,你能解释一下我最感兴趣的每一步的思考过程吗:)+1,谢谢!
    \u W
    如何匹配最后一步中的所有特殊字符?还有,开头和结尾
    ~
    有什么作用?这是一个打字错误。它是
    \W
    ~
    是一个php正则表达式分隔符
    \W
    匹配所有非单词字符。但是,我不明白
    \W
    与匹配所有特殊字符有什么关系?对于匹配的字母,我们有
    a-z
    ,数字
    0-9
    ,特殊字符似乎完全不同:)我假设您指的是
    \uu
    的特殊字符加上所有非单词字符(除了
    a-z
    a-z
    0-9
    abc$