1: \d螺男,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?
\d digit 數(shù)字字符
\w word 單詞字符 (包括字母下隧、數(shù)字、下劃線)
\s space 空白符 (包括制表符何乎、換行符宪赶、垂直制表符、換頁符、回車符辕棚、空格)
[a-zA-Z0-9] 大小寫字母及數(shù)字
\b border 單詞邊界逝嚎,包括字符串開頭补君、結(jié)尾,空白符號和中橫線 - 都可以作為單詞邊界
. 除了換行符昧互、回車符之外的所有字符
- 量詞挽铁,代表任意次數(shù)
- 量詞,至少出現(xiàn)一次
敞掘? 量詞叽掘,最多出現(xiàn)一次
x{3} 匹配 x連續(xù)出現(xiàn)3次 xxx
^ 邊界,以某某某開頭玖雁, 另外 ^ 有取反之意更扁, 和 [ ] 組合可以創(chuàng)建反向類,如: [^abc] 表示不是a或者b或者c的字符
$ 邊界赫冬,以某某某結(jié)尾
2: 寫一個函數(shù)trim(str)浓镜,去除字符串兩邊的空白字符
function trim(str){
return str.replace(/^\s+|\s+$/g, '')
}
trim(' 1231ffd sdfsdf s-&*^5 ') //"1231ffd sdfsdf s-&*^5"
3: 寫一個函數(shù)isEmail(str),判斷用戶輸入的是不是郵箱
function isEmail(str){
return /^\w\.?\w+@\w+(\.\w+)+$/.test(str)
}
isEmail('wangpeng199451@gmail.com') //true
4: 寫一個函數(shù)isPhoneNum(str)劲厌,判斷用戶輸入的是不是手機號
function isPhoneNum(str){
return /^1[34578]\d{9}$/.test(str)
}
isPhoneNum(14299092309) //true
5: 寫一個函數(shù)isValidUsername(str)膛薛,判斷用戶輸入的是不是合法的用戶名(長度6-20個字符,只能包括字母脊僚、數(shù)字增淹、下劃線)
function isValidUsername(str){
return /^\w{6,20}$/.test(str)
}
isValidUsername('wangpeng199451') //true
6: 寫一個函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符,只包括大寫字母哭当、小寫字母、數(shù)字彻采、下劃
function isValidPassword(str){
switch(true){
case !/^\w{6,20}$/.test(str):
return false
// return是直接結(jié)束當(dāng)前函數(shù)返回 break是直接結(jié)束當(dāng)前循環(huán)返回,這里函數(shù)內(nèi)只有循環(huán),可以省略 break
case /^[a-z]{6,20}$/.test(str):
return false
case /^[A-Z]{6,20}$/.test(str):
return false
case /^\d{6,20}$/.test(str):
return false
case /^_{6,20}$/.test(str):
return false
default:
return true
}
}
isValidPassword('wangpeng199451') //true
7: 寫一個正則表達式,得到如下字符串里所有的顏色
var re = /#[0-9a-fA-F]{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); // 輸出 [""hunger" ,hello "world""] 這里數(shù)組 length = 1
因為默認(rèn)是貪婪模式质帅, .除換行回車之外的任意字符,也就包括了引號,*代表任意次數(shù)洛退,很貪婪盡可能多的匹配彩匕,
一只匹配到末尾袜漩,接著匹配正則表達式里的最后的引號 "奠货,所以又倒著匹配,剛好第一個就是 " 廊遍。
var str = 'hello "hunger" , hello "world"';
var pat = /".*?"/g; // 只需要在這里給量詞 * 指定非貪婪模式即可
str.match(pat); // 輸出 [""hunger"", ""world""]