PHP preg_match无法正常工作

时间:2013-03-22 20:46:01

标签: php preg-match

我的客户要求我在他的网站登录用户名中添加新规则。因此,我尝试了以下代码。

  $userid = "12345678SM"; //format of the username
  $check="/^[0-9]+[S].[M]{10}$/i";
  $check2="/^[0-9]+[F].[M]{10}$/i";
    print($name);
  if(!preg_match($check,$userid) || !preg_match($check2,$userid)) {
    print('The user id is invalid');                    
  }

但是,即使我输入了正确的用户名格式,也会打印错误。我实际上有时曾使用过这段代码而且工作过但在这里我不明白为什么它不起作用。有人可以帮我解决这个问题吗?

仅供参考:用户名格式应为7位数字和2个选定的字母字符,例如:SM或FM

2 个答案:

答案 0 :(得分:3)

[M]{10}表示需要10 M。

正确的检查是:

$check="/^\d{7}[SF]M$/i";
if (!preg_match($check, $userid)) {
    print('The user id is invalid');                    
}

答案 1 :(得分:1)

[M]{10}”部分匹配“MMMMMMMMMM”。 您可以使用

检查您描述的格式
^[0-9]{8}[S|F]M$

你也说过

  

$ userid =“12345678SM”; ( 8位

  

用户名的格式应为 7位和2个选定的字母字符

我的例子适用于8。