我想匹配字母和數字,但不只是數字。如何驗證字母和數字或隻字母的字符串?
所以我想創建一個preg_match()
模式來過濾這樣的:
如:
no123
真正123no
真正123456
假letters
真正
我想匹配字母和數字,但不只是數字。如何驗證字母和數字或隻字母的字符串?
所以我想創建一個preg_match()
模式來過濾這樣的:
如:
no123
真正123no
真正123456
假letters
真正你可以試試這個Regex。它至少檢查一個數字和字母。
(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
根據您的評論: 「只有字母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
使用SKIP FAIL模式將勝過託託的模式(MH2K9的答案不正確,因爲它不允許所有字母匹配)。您可以在我的演示鏈接中的示例文本上測試他們的模式。
/^\d+$(*SKIP)(*FAIL)|^[a-z\d]+$/i
這種 「不夠格」 純數字字符串,並混合(數字-字母)和純字母串匹配。
代碼:(Demo)
$string='test123';
var_export(preg_match('/^\d+$(*SKIP)(*FAIL)|^[a-z\d]+$/i',$string)?true:false);
輸出:
true
因此,我們必須至少有一個字母。在它之前可以有任意數量的數字,並且允許任何數量的字母數字字符直到字符串結束。
/^\d*[a-z][a-z\d]*$/i
^
串的開始\d*
數字[a-z]
一個字母[a-z\d]*
的字母數字字符$
直到字符串i
結束標誌的任何量的任何量F或無殼匹配
只有字母有效還是無效? – Toto
只有字母但是隻有數字無效。 –