1. \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分別是什么?
- \d 表示一個(gè)數(shù)字
- \w 一個(gè)以數(shù)字,字母或者下劃線組成的單詞
- \s 空白符(空格 tab \n \r)
- [a-zA-Z0-9]所有的大小寫字母以及數(shù)字
- \b 代表單詞邊界
-
.
代表處除換行和結(jié)束符以外的任何字符 -
*
代表匹配0個(gè)或者多個(gè) -
+
代表匹配1個(gè)或者多個(gè) -
?
代表匹配0個(gè)或者1個(gè) - x{3} 代表匹配3個(gè)x
-
^
在[]中表示取反觉阅,不在[]中表示開始的位置,以......開始 - $ 代表以什么結(jié)尾
2.寫一個(gè)函數(shù)trim(str)壳嚎,去除字符串兩邊的空白字符
function trim(str){
return str.replace(/^\s+|\s+$/g,'');
}
3.寫一個(gè)函數(shù)isEmail(str)席爽,判斷用戶輸入的是不是郵箱
function isEmail(str){
return /^\w+@.+/.test(str);
}
4.寫一個(gè)函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機(jī)號
function isPhoneNum(str){
return /^1\d{10}$/.test(str);
}
5.寫一個(gè)函數(shù)isValidUsername(str)蹦玫,判斷用戶輸入的是不是合法的用戶名(長度6-20個(gè)字符赎婚,只能包括字母刘绣、數(shù)字、下劃線)
function isValidUsername(str){
return /^\w{6,20}$/.test(str);
}
6.寫一個(gè)函數(shù)isValidPassword(str),判斷用戶輸入的是不是合法密碼(長度6-20個(gè)字符挣输,只包括大寫字母纬凤、小寫字母、數(shù)字撩嚼、下劃線停士,且至少至少包括兩種)
function isValidPassword(str){
var reg = /(^[0-9]+$)|(^[A-Z]+$)|(^[a-z]+$)|(^_+$)|\W+/g;
if(str.length <= 6 || str.length >= 20){
return '密碼的長度要在6到10位字符之間';
}else if(reg.test(str)){
return '請使用大小寫字母、數(shù)字或者下劃線做密碼完丽,并且至少要有兩種';
}else{
return '可使用的密碼';
}
}
7.寫一個(gè)正則表達(dá)式恋技,得到如下字符串里所有的顏色
var reg = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})/g;
var str = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee ";
console.log(str.match(reg));
8.下面代碼輸出什么? 為什么? 改寫代碼,讓其輸出['hunger', 'world'].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat);
輸出
[""hunger" , hello "world""]
原因是正則表達(dá)式的規(guī)則是第一個(gè)字符為"逻族,后面的字符是除了回車符和換行符的任意字符可以出現(xiàn)0次或任意次蜻底,而*后面沒有?所以是貪婪模式聘鳞,會(huì)在已經(jīng)匹配成功的條件下盡可能多的匹配朱躺,所以會(huì)匹配到最后一個(gè)",最終輸出[""hunger" , hello "world""]搁痛。
改寫:
var str = 'hello "hunger" , hello "world"';
var pat = /".*?"/g;
str.match(pat);
輸出:
[""hunger"", ""world""]