1. \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?
| 字符 | 等價類 | 含義 |
|---|---|---|
| \d | [0-9] | 數(shù)字字符 |
| \w | [a-zA-Z_0-9] | 單詞字符,字母、數(shù)字下劃線 |
| \s | [\t\n\x0B\f\r] | 空白符 |
| [a-zA-Z0-9] | 大小寫字母、數(shù)字 | |
| \b | 單詞邊界 | |
| x{3} | x出現(xiàn)3次 | |
| ? | 出現(xiàn)零次或一次(最多出現(xiàn)一次) | |
| + | 出現(xiàn)一次或多次(至少出現(xiàn)一次) | |
| * | 出現(xiàn)零次或多次(任意次) | |
| ^ | 以xxx開頭 | |
| $ | 以xxx結(jié)尾 |
2. 寫一個函數(shù)trim(str),去除字符串兩邊的空白字符
如下:
function trim(str) {
return str.replace(/^\s+|\s+$/g,"");
}
var str = trim(" -ab cd- ");
console.log(str) // -ab cd-
3. 寫一個函數(shù)isEmail(str),判斷用戶輸入的是不是郵箱
如下:
function isEmail(str) {
var reg = new RegExp("^\\w+@[\\w-]+\\.(com)$");
return reg.test(str);
}
var str = isEmail("hungerlee@qq.com");
console.log(str) // true
4. 寫一個函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機(jī)號
如下:
function isPhoneNum(str) {
var reg = /^(\+86-)?1[356789]\d{9}$/; //或?qū)懗蓈ar reg = new RegExp("^(\\+86-)?1[356789]\\d{9}$");
return reg.test(str);
}
var str = isPhoneNum("13909101234");
console.log(str) // true
5. 寫一個函數(shù)isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長度6-20個字符,只能包括字母、數(shù)字、下劃線)
如下:
function isValidUsername(str) {
if (str.length<6||str.length>20||/W/.test(str)) { //長度6-20個字符,只包括大小寫字母、數(shù)字、下劃線
return false;
}else {
return true;
}
}
var str = isValidUsername("lee123_abc");
console.log(str) // true
6. 寫一個函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符,只包括大寫字母、小寫字母、數(shù)字、下劃線,且至少至少包括兩種)
如下:
function isValidPassword(str) {
if (str.length<6||str.length>20||/W/.test(str)) { //長度6-20個字符,只包括大小寫字母、數(shù)字、下劃線
return false;
}
var count = 0; //至少包括兩種
if (/[A-Z]/.test(str)) {count++;}
if (/[a-z]/.test(str)) {count++;}
if (/[0-9]/.test(str)) {count++;}
if (/_/.test(str)) {count++;}
if (count>=2) {
return true;
}else{
return false;
}
}
var str = isValidPassword("1234Abcd");
console.log(str) //true
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; //匹配" "之間出現(xiàn)任意次,除了回車換行符之外所有的字符
str.match(pat); // ["hunger" , hello "world"]
改寫:
var str = 'hello "hunger" , hello "world"';
var pat = /"[a-zA-Z]*"/g; //匹配" "之間出現(xiàn)任意次的大小寫字母
str.match(pat); // [""hunger"", ""world""]