2017-06-22 155 views

回答

0

你可以試試這個Regex。它至少檢查一個數字和字母。

(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$ 
0

根據您的評論: 「只有字母vaild但只有數量無效。」,這港島線做的工作:

if (preg_match('/^(?=.*[a-z])[a-z0-9]+$/i', $inputString)) { 
    // valid 
} else { 
    // invalid 
} 

說明:

/    : regex delimiter 
^   : start of string 
    (?=.*[a-z]) : lookahead, make sure we have at least one letter 
    [a-z0-9]+ : string contains only letters and numbers 
    $    : end of string 
/i    : regex delimiter + flag case insensitive 
1

使用SKIP FAIL模式將勝過託託的模式(MH2K9的答案不正確,因爲它不允許所有字母匹配)。您可以在我的演示鏈接中的示例文本上測試他們的模式。

/^\d+$(*SKIP)(*FAIL)|^[a-z\d]+$/i

Pattern Demo Link

這種 「不夠格」 純數字字符串,並混合(數字-字母)和純字母串匹配。

代碼:(Demo

$string='test123'; 
var_export(preg_match('/^\d+$(*SKIP)(*FAIL)|^[a-z\d]+$/i',$string)?true:false); 

輸出:

true 
1

因此,我們必須至少有一個字母。在它之前可以有任意數量的數字,並且允許任何數量的字母數字字符直到字符串結束。

/^\d*[a-z][a-z\d]*$/i 
  • ^串的開始
  • \d*數字
  • [a-z]一個字母
  • [a-z\d]*的字母數字字符
  • $直到字符串
  • i結束標誌的任何量的任何量F或無殼匹配

See this demo at regex101