[英]how to write this regular expression?
一個 20 - 24 字符長的字母數字字符串,沒有空格和符號,至少有 2 位數字
AAAAAAAAAAAAAAAAAAAA - not valid
AAAAAA0AAAAAAAAA0AAA - valid
AAAAAA01AAAAAAAAA0AAA - valid
AAAAAA0AAAAAAAAA0AAA@ - not valid
我認為這只有通過前瞻斷言才有可能:
^(?=[a-zA-Z\d]{20,24}$)[a-zA-Z]*\d[a-zA-Z]*\d[a-zA-Z\d]*$
前瞻斷言( (?=[a-zA-Z\d]{20,24}$)
)檢查字符串是否具有預期的形式(20-24 個字母數字字符)。 第二部分( [a-zA-Z]*\d[a-zA-Z]*\d[a-zA-Z\d]*
)檢查它是否包含至少兩位數字。
我認為這是最簡單的模式:首先進行肯定的前瞻以檢查是否至少有兩位數字,然后匹配 20-24 個字母數字字符:
^(?=.*\d.*\d)[A-Za-z\d]{20,24}$
我要抽象一點,因為這聽起來像是作業(如果是,請這樣標記)。
{
min ,
max }
限制模式匹配的次數[
charlist ]
匹配如果您需要更多幫助,請更新您的問題(和標簽)。
Gumbo 對需求有正確的表述。
它可以縮短,但他的更清晰,可能比短版本更快。
var rX=/^(?=[a-zA-Z\d]{20,24}$)([a-zA-Z]*\d){2,}/
在 JS 中(對 C# 語法不夠自信):
if (str.length >= 20 && str.length <= 24 && /([a-z]*[0-9]){2}[a-z0-9]*/i.test(str)) {
// match found
}
基本上與 Gumbo 相同的想法只是更短一點:
^(?=[\w\d]{20,24}$)[\w]*\d[\w]*\d[\w\d]*$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.