0

我需要匹配字符串的前几个字符。如果满足以下条件,则匹配为真:

  1. 第一个字符是字母(不区分大小写)
  2. 第二个字符是数字或字母
  3. 如果第二个字符是数字,则匹配返回 true
  4. 如果第二个字符是字母,第三个字符必须是数字
  5. 该模式将忽略字符串中的所有其他后续字符

例子:

AB1ghRjh  //true
c1        //true
G44       //true
Tt7688    //true
kGF98d    //false
4FG3      //false
4 5a      //false
RRFDE     //false

如果有人能提供一个例子,将不胜感激。

非常感谢!

4

2 回答 2

2

正则表达式将是

^[a-zA-Z](\d|[a-zA-Z]\d).*
于 2013-10-29T06:47:34.653 回答
1
/^(?:[a-z]{2}|[a-z])\d.*$/im

解释:

^   # Start of string
    (?: # Start non-capturing group
        [a-z]{2}    # Two letter
        |   # OR
        [a-z]   # One letter
    )   # End of non-capturing group
    \d  # At least a digit here
    .*  # Escape all other characters
$   # End of string

iflag 表示不区分大小写,mflag 表示在每一行上进行匹配(如果您的输入没有换行符,则可选^$

现场演示

然后使用preg_match函数来匹配字符串:

if(preg_match("/^(?:[a-z]{2}|[a-z])\d.*$/i", "AB1ghRjh"))
{
    echo "Matched";
}
于 2013-10-29T07:37:20.927 回答