如果包含至少我會檢查的字符串:PHP(正則表達式)檢查是否字符串包含至少4位+ 2個字母
2個字母(AZ)不區分大小寫 4位數字(0-9)
順序並不重要。這可能是a1234b,ABCD1234,4444aa等等等等
我的實際正則表達式是
if (preg_match("/[a-z][^a-z]*[a-z]*[0-9]/i",$string)) {
echo 'secure';
$continue = true;
}
,它不功能,如果字符串以數字開頭。謝謝
如果包含至少我會檢查的字符串:PHP(正則表達式)檢查是否字符串包含至少4位+ 2個字母
2個字母(AZ)不區分大小寫 4位數字(0-9)
順序並不重要。這可能是a1234b,ABCD1234,4444aa等等等等
我的實際正則表達式是
if (preg_match("/[a-z][^a-z]*[a-z]*[0-9]/i",$string)) {
echo 'secure';
$continue = true;
}
,它不功能,如果字符串以數字開頭。謝謝
^(?=(?:.*[a-zA-Z]){2})(?=(?:.*[0-9]){4})\w+$
您可以在這裏使用lookahead
來應用條件。
https://regex101.com/r/vV1wW6/22
$re = "/^(?=(?:.*[a-zA-Z]){2})(?=(?:.*[0-9]){4})\\w+$/m";
$str = "a1234b\nabcd1234\n4444aa\n12\n12a\n12aa22";
preg_match_all($re, $str, $matches);
您可以使用一個人類可讀的檢查是這樣的:
\P{L}
信件和\P{M}
非變音符號),如果生成的字符串長度小於2,返回false\D
),如果結果字符串長度小於4,則返回false。至於
如果字符串以數字開頭
您可以添加它不起作用的if (preg_match('/^\D/', $str))
其中^\D
意味着開始與非數字。
PHP代碼:
if (preg_match('/^\D/', $str)) {
if (mb_strlen(preg_replace('/\D/', '', $str), 'UTF8') < 4 ||
mb_strlen(preg_replace('/[\P{L}\P{M}]/u', '', $str), 'UTF8') < 2) {
echo "Invalid";
}
else
{
echo "Valid";
}
}
注意,要算一個Unicode字符串的長度,你需要mb_strlen
功能。
你可以試試這個模式(\b[a-zA-Z]+\d{4}[a-z]?|\b[a-zA-Z]+\d{4}|\b\d{4}[a-zA-Z]+)
觀看演示這裏https://regex101.com/r/uJ0vD4/8
輸入
a1234b,ABCD1234,4444aa,33333,ab555,aac3566
輸出
a1234b,ABCD1234,4444aa,aac3566
^(?=(?:.*[0-9]){4})\w+$
作品這種情況下
爲PHP:
$re = "/^(?=(?:.*[0-9]){4})\\w+$/m";
$str = "a1234b\naaa32233\n";
preg_match_all($re, $str, $matches);
爲JavaScript:
var re = /^(?=(?:.*[0-9]){4})\w+$/gm;
var str = 'a1234b\naaa32233\n';
var m;
while ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
* 「的順序並不重要。」 * - - 這個要求使得'regex'不是最適合該任務的工具。使用'regex'來驗證字符串是否只包含字母和數字,然後計算數字(和/或字母)並檢查每種類型是否足夠。 – axiac