[英]How to make regular expression with only 3 characters and 3 digits?
我在這里嘗試了以下正則表達式匹配http://rubular.com/但它一次只匹配3個字符或3個數字。
^((\d{3})|(\w{3}))$
我需要這樣的結果:
123eee
4r43fs
干得好:
^(?=(?:[a-z]*\d){3})(?=(?:\d*[a-z]){3})\w{6}$
如果至少有三個數字,至少三個字母,最多六個字符,則該字符串必須匹配。
這是如何運作的?
\\w{6}
匹配,直到字符串結束 前瞻
讓我們分解第一個前瞻: (?=(?:[az]*\\d){3})
它斷言三次( {3}
),在字符串中的這個位置,這是由^
斷言的字符串的開頭,我們能夠匹配任意數量的字母,后跟一個數字。 這意味着必須至少有三位數。
如果你想使用正則表達式,它是非常復雜的:
^(?=.*\d.*\d.*\d)(?=.*[a-zA-Z].*[a-zA-Z].*[a-zA-Z]).{6}$
這將做你想要的。
function checker(data) {
var splitted = data.split(/\d/);
if (splitted.length === 4) {
return splitted.join("").split(/[a-zA-Z]/).length === 4;
}
return false;
}
console.assert(checker("123eee") === true);
console.assert(checker("4r43fs") === true);
console.assert(checker("abcd12") === false);
console.assert(checker("4444ab") === false);
console.assert(checker("ab1c") === false);
console.assert(checker("444_ab") === false);
如果您只想匹配任何六個字符的數字組合和“單詞字符”,請使用:
/^[\d\w]{6}$/
嗨,我們可以用兩種方式做到這一點。
如果你需要IE7支持“?”表達式會給出一些問題。所以你可以檢查如下。
[\d\w]{6} && ![\d]{6} && ![\w]{6}
檢查組合
只檢查數字
只檢查字母。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.