題目一膛虫、\d
,\w
,\s
,[a-zA-Z0-9]
,\b
,.
,*
,+
,?
,x{3}
,^
,$
分別是什么?
正則 | 作用 |
---|---|
\d |
匹配一個數(shù)字 |
\w |
匹配數(shù)字、字母、下劃線游盲,等價[a-zA-Z0-9_]
|
\s |
匹配空白符 |
[a-zA-Z0-9] |
匹配數(shù)字、字母 |
\b |
匹配單詞邊界 |
. |
匹配除空白符的所有字符 |
* |
匹配 0 次或者多次 |
+ |
匹配 1 次或者多次 |
? |
匹配 0 次或者 1 次 |
x{3} |
匹配 x 連續(xù)出現(xiàn) 3 次 |
^ |
取反蛮粮、或者以某某開頭 |
$ |
以某某結(jié)尾 |
題目二益缎、寫一個函數(shù) trim(str) ,去除字符串兩邊的空白字符
function trim (str){
return str.replace(/(^\s*) | (\s*$)/g, '')
}
var str = ' aa aaa '
console.log(trim(str))
題目三然想、寫一個函數(shù) isEmail(str) 莺奔,判斷用戶輸入的是不是郵箱
由于郵箱格式多種多樣,沒有一個統(tǒng)一的標準变泄,所以我假設(shè)這個郵箱是個常規(guī)的郵箱令哟。
function isEmail(email){
return /^[\w]+@.+\..+$/.test(email)
}
var str = 'jack7770126@gmail.com'
console.log(isEmail(str))
題目四、寫一個函數(shù) isPhoneNum(str) 妨蛹,判斷用戶輸入的是不是手機號
手機號碼的標準同樣不統(tǒng)一屏富,所以按一般情況處理
function isPhoneNum(PhoneNum){
return /^1[34578]\d{9}$/.test(PhoneNum)
}
var str = '18998286072'
console.log(isPhoneNum(str))
題目五、寫一個函數(shù) isValidUsername(str) 蛙卤,判斷用戶輸入的是不是合法的用戶名(長度6-20個字符狠半,只能包括字母、數(shù)字颤难、下劃線)
function isValidUsername(username){
return /^\w{6,20}$/.test(username)
}
var str = 'jack7770126'
console.log(isValidUsername(str))
題目六神年、寫一個函數(shù) isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符,只包括大寫字母行嗤、小寫字母瘤袖、數(shù)字、下劃線昂验,且至少至少包括兩種)
function isValidPassword(password){
if(!/^\w{6,20}$/.test(password)) return false
if(/^[a-z]{6,20}$/.test(password)) return false
if(/^[A-Z]{6,20}$/.test(password)) return false
if(/^[0-9]{6,20}$/.test(password)) return false
return true
}
var str = 'aaaa21aa'
console.log(isValidPassword(str))
題目七捂敌、寫一個正則表達式艾扮,得到如下字符串里所有的顏色
var re = /*正則...*/
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) ) // ['#121212', '#AA00ef']
結(jié)果
var re = /#([0-9a-f]{6}|[0-9a-f]{3})(?=;)/ig
var subj = "#fffcolor: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee; #fff;"
console.log( subj.match(re) ) // ['#121212', '#AA00ef']
題目八、下面代碼輸出什么? 為什么? 改寫代碼占婉,讓其輸出[""hunger"", ""world""].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat);
上面代碼的結(jié)果會是"hunger" , hello "world"
泡嘴,因為*
開啟的是貪婪模式,它會盡可能的匹配更多字符逆济。想要輸出單個單詞酌予,只要改為非貪婪模式就行了,改寫(只加了個問號):
var str = 'hello "hunger" , hello "world"';
var pat = /".*?"/g;
str.match(pat);