1: \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:表示匹配空格(包括制表符郑藏,空格符较性,斷行符)鲤孵,相當(dāng)于[\t\r\n\v\f]
- \b:表示匹配詞的邊界
- .:表示匹配除回車(\r)部脚、換行(\n)、行分隔符(\u2028)和段分割符(\u2029)以外的所有字符裤纹。
- *:表示某個模式出現(xiàn)0次或多次委刘,等同于{0丧没,}
- +:表示某個模式出現(xiàn)1次或多次,等同{1,}
- ?:問號表示某個模式出現(xiàn)0次或1次锡移,等同于{0,1}
- x{3}:表示查找符合x出現(xiàn)三次以上的元素呕童。
^:- 1.^元字符,創(chuàng)建反向類
- 2.^邊界匹配字符淆珊,以xxx開頭
- $以xxx結(jié)尾
2: 寫一個函數(shù)trim(str)夺饲,去除字符串兩邊的空白字符
function trim(str){
var reg = /^\s*|\s*/g;
return str.replace(reg,'');
};
var str = ' adf ';
console.log('{'+trim(str)+'}');
題目3: 寫一個函數(shù)isEmail(str),判斷用戶輸入的是不是郵箱
function isEmail(str){
var reg = /^\w+@\w+\.[a-zA-Z]+$ /;
return reg.test(str);
}施符;
newstr = isEmail('wu898@gamil.com');
console.log(newstr);
題目4: 寫一個函數(shù)isPhoneNum(str)往声,判斷用戶輸入的是不是手機(jī)號
function isPhoneNum(str){
var reg = /^(\+86)?1\d{10}$/;
return reg.test(str);
};
var newStr = isPhoneNum('18019216293');
console.log(newStr);
題目5: 寫一個函數(shù)isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長度6-20個字符戳吝,只能包括字母浩销、數(shù)字、下劃線)
function isValidUsername(str){
var reg = /^\w{6,20}$/;
return reg.test(str);
};
var str = 'aabbcccvvddd';
console.log(isValidUsername(str));
題目6: 寫一個函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符听哭,只包括大寫字母慢洋、小寫字母、數(shù)字陆盘、下劃線普筹,且至少包括兩種)
function isValidPassword(str){
if(str.length<6||str.length>20){
return '錯誤,密碼長度為6到20個字符';
}else if(/^[A-Z]+$|^\d+$|^[a-z]+$|^_+$/g.test(str)){
return '錯誤隘马,密碼應(yīng)包括大寫字母太防、小寫字母、數(shù)字酸员、下劃線中至少兩種';
}else{
return'恭喜杏头,正確的密碼';
};
};
console.log(isValidPassword('1')) //"錯誤,密碼長度為6到20個字符"
console.log(isValidPassword('1111111')) //"錯誤沸呐,密碼應(yīng)包括大寫字母、小寫字母呢燥、數(shù)字崭添、下劃線中至少兩種"
console.log(isValidPassword('AAAAAAA')) //"錯誤,密碼應(yīng)包括大寫字母叛氨、小寫字母呼渣、數(shù)字、下劃線中至少兩種"
console.log(isValidPassword('aaaaaaaaa')) //"錯誤寞埠,密碼應(yīng)包括大寫字母屁置、小寫字母、數(shù)字仁连、下劃線中至少兩種"
console.log(isValidPassword('__________')) //"錯誤蓝角,密碼應(yīng)包括大寫字母阱穗、小寫字母、數(shù)字使鹅、下劃線中至少兩種"
console.log(isValidPassword('As_2dasasd')) //"正確的密碼"
console.log(isValidPassword('das_0123123A')) // "正確的密碼"
題目7: 寫一個正則表達(dá)式揪阶,得到如下字符串里所有的顏色
var re = /#[a-zA-Z0-9]{6}/g;
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) ) // ['#121212', '#AA00ef']
題目8: 下面代碼輸出什么? 為什么? 改寫代碼,讓其輸出[""hunger"", ""world""].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat);
該題是考察貪婪和懶惰匹配
貪婪匹配:正則表達(dá)式一般趨向于最大長度匹配患朱,也就是所謂的貪婪匹配
懶惰匹配就是匹配到結(jié)果就好鲁僚,就少的匹配字符
兩種修改方式: