2013-03-22 58 views
0

我的客戶要求我將新的規則添加到用戶名到他的網站登錄。因此我嘗試了下面的代碼。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

+0

工作你的用戶名示例代碼表示8位數字,你的FYI表示爲7. – baloo 2013-03-22 20:57:14

回答

3

[M]{10}意味着-10 M是必需的。

正確的檢查是:

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

的 「[M]{10}」 部分匹配 「MMMMMMMMMM」。 您所描述的格式可以與

^[0-9]{8}[S|F]M$ 

另外你說

$用戶id = 「12345678SM」 進行檢查; (8位數

格式的用戶名應該是7位數字和2箇中選擇字母字符

我的例子將爲8.

+0

感謝您的快速回復更新工作正常,但你能告訴我有沒有辦法忽略字母大寫和小寫檢查忽略? – 2013-03-22 21:14:00