1. \d匈仗,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?
\d //數(shù)字字符
\w //單詞字符抵拘,字母、數(shù)字下劃線 [a-zA-Z_0-9]
\s // 空白字符
[a-zA-Z0-9]//表示匹配任意的字母蔗牡、數(shù)字
\b // 單詞邊界
. //除了回車符和換行符之外的所有字符
* //出現(xiàn)零次或多次
+ //出現(xiàn)一次或多次
? //出現(xiàn)一次或零次
x{3} // 出現(xiàn)3次
^$ // 開頭和結(jié)尾
2. 寫一個(gè)函數(shù)trim(str),去除字符串兩邊的空白字符
function trim(str){
return str.replace(/^\s+|\s+$/g,'')
}
trim(" hello ")// "hello"
3. 寫一個(gè)函數(shù)isEmail(str)稠肘,判斷用戶輸入的是不是郵箱
function isEmail(str){
var reg = /\w+.+/
return reg.test(str)
}
isEmail("123@163.com")//true
4. 寫一個(gè)函數(shù)isPhoneNum(str)猖毫,判斷用戶輸入的是不是手機(jī)號(hào)
function isPhoneNum(str){
var reg = /^1\d{10}$/
return reg.test(str)
}
isPhoneNum("15124505701")//true
5. 寫一個(gè)函數(shù)isValidUsername(str)保礼,判斷用戶輸入的是不是合法的用戶名(長(zhǎng)度6-20個(gè)字符,只能包括字母甩挫、數(shù)字贴硫、下劃線)
function isValidUsername(str){
var reg = /^\w{6,20}$/
return reg.test(str)
}
isValidUsername("123_456")//true
6. 寫一個(gè)函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長(zhǎng)度6-20個(gè)字符,只包括大寫字母伊者、小寫字母夜畴、數(shù)字拖刃、下劃線,且至少至少包括兩種)
function isValidPassword(str){
if(!/^\w{6,20}$/.test(str)) return false
if(/^[a-z]{6,20}$/.test(str)) return false
if(/^[A-Z]{6,20}$/.test(str)) return false
if(/^_{6,20}$/.test(str)) return false
if(/^\d{6,20}$/.test(str)) return false
return true
}
isValidPassword("1234_56")//true
7. 寫一個(gè)正則表達(dá)式贪绘,得到如下字符串里所有的顏色
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
var reg = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})(?=;)/g
console.log(subj.match(reg)) // ['#121212', '#AA00ef']
8. 下面代碼輸出什么? 為什么? 改寫代碼兑牡,讓其輸出[""hunger"", ""world""].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat);
正則規(guī)則是全局匹配以"為開始,"為結(jié)束的內(nèi)容税灌,""內(nèi)匹配不限出現(xiàn)次數(shù)的除了換行符和回車符的其他內(nèi)容均函,從字符串中找,由于是貪婪模式菱涤,得到了"hunger" , hello "world"這樣一串內(nèi)容
var str = 'hello "hunger" , hello "world"';
var pat = /".*?"/g;
str.match(pat);
也可以讓""內(nèi)沒有"
var str = 'hello "hunger" , hello "world"';
var pat = /"[^"]*"/g;
str.match(pat);