我想將特定長度的字母數字字串與至少一個字母和至少一個數字相匹配。
例如,adfyg432 應包含字母和數字,長度應從 8 開始。
我使用了這個運算式,但它不起作用:
^([A-Za-z]{1,}\d{1,}){8,}$
uj5u.com熱心網友回復:
您當前的模式重復一組 8 次或更多次。該組本身匹配 1 個或多個字符 az 后跟 1 個或多個數字。
這意味著要匹配的最小字串長度是 16 個字符,每對至少 2 個。因此,例如,一個類似的字串a1aa1a1a1a1a1a1a1會匹配。
您可以使用 2 個前瞻斷言來撰寫模式,以斷言長度至少為 8 并斷言至少一個 char az。
然后匹配至少一個數字。使用不區分大小寫的匹配:
^(?=[a-z\d]{8,}$)(?=\d*[a-z])[a-z]*\d[a-z\d]*$
在部分情況下,模式匹配:
^字串的開始(?=[a-z\d]{8,}$)正向前瞻,斷言 8 個或更多字符 az 或數字直到字串結尾(?=\d*[a-z])積極前瞻斷言至少一個 char az[a-z]*匹配可選字符 az\d至少匹配一個數字[a-z\d]*匹配可選字符 az 或數字$字串結束
正則運算式演示
const regex = /^(?=[a-z\d]{8,}$)(?=\d*[a-z])[a-z]*\d[a-z\d]*$/i;
[
"AdfhGg432",
"Abc1aaa"
].forEach(s =>
console.log(`Match "${s}": ${regex.test(s)}`)
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/427081.html
標籤:javascript 正则表达式
