題目1: \d白魂,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?
- \d爽篷,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分別是什么?
\d:表示匹配0-9之間的任一數(shù)字,相當(dāng)于[0-9]
\w:表示匹配任意的字母壮啊、數(shù)字和下劃線颇蜡,相當(dāng)于[A-Za-z0-9_]
\s:表示匹配空格(包括制表符、空格符假颇、斷行符等)胚鸯,相等于[\t\r\n\v\f]
[a-zA-Z0-9]:相當(dāng)于\w,表示匹配任意的字母、數(shù)字和下劃線
\b:表示匹配詞的邊界
. :表示匹配除回車(\r)笨鸡、換行(\n) 姜钳、行分隔符(\u2028)和段分隔符(\u2029)以外的所有字符
*:表示星號表示某個模式出現(xiàn)0次或多次,等同于{0,}
+:表示加號表示某個模式出現(xiàn)1次或多次形耗,等同于{1,}
哥桥?:問號表示某個模式出現(xiàn)0次或1次,等同于{0, 1}
x{3}:表示查找符合x出現(xiàn)三次以上的元素
^$:匹配空字符串(連一個空格也沒有的)
題目2: 寫一個函數(shù)trim(str)激涤,去除字符串兩邊的空白字符
function trim(str){
return str.replace(/^\s+|\s+$/g, '');
}
題目3: 寫一個函數(shù)isEmail(str)拟糕,判斷用戶輸入的是不是郵箱
function isEmail(str){
var em=/^\S+[@]\S+[.]\S+$/g;
return em.test(str)
}
題目4: 寫一個函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機(jī)號
function isPhoneNum(str){
var phoneNum=/1\d{10}$/g;
return phoneNum.test(str)
}
題目5: 寫一個函數(shù)isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長度6-20個字符送滞,只能包括字母侠草、數(shù)字、下劃線)
function isValidUsername(str){
var name=/^\w{6,20}$/;
return name.test(str)
}
題目6: 寫一個函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符犁嗅,只包括大寫字母边涕、小寫字母、數(shù)字褂微、下劃線功蜓,且至少至少包括兩種)
function isValidPassword(str){
var keyNot=/^\w{6,20}$/;
var key=/(^[A-Z]+$)|(^[a-z]+$)|(^[0-9]+$)|(^_+$)/;
if(keyNot.test(str)){
if(key.test(str)){
return "請輸入6-20位密碼(大寫字母、小寫字母蕊梧、數(shù)字霞赫、下劃線,至少包含其中兩種)";
}
else {
return "設(shè)置成功"
}
}
else{
return "請輸入6-20位密碼(大寫字母肥矢、小寫字母端衰、數(shù)字、下劃線甘改,至少包含其中兩種)"
}
}
題目7: 寫一個正則表達(dá)式旅东,得到如下字符串里所有的顏色
var re = /*正則...*/
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) ) // ['#121212', '#AA00ef']
var re = /#[a-zA-Z0-9]{6}/g;
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee #fd2 "
alert( subj.match(re) ) // #121212,#AA00ef
題目8: 下面代碼輸出什么? 為什么? 改寫代碼,讓其輸出[""hunger"", ""world""].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat);
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat);
///////輸出[""hunger" , hello "world""]
///////原因是. 匹配除換行和行結(jié)束符外的任意單個字符十艾,而 *是貪婪模式抵代,在滿足條件的情況下,會盡可能多的匹配
var str = ' hello "hunger" , hello "world" ';
var pat = /".*?"/g;
str.match(pat); //["hunger", "world"]