1, \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?
\d:預定義類的數字字符.
\w"單詞字符,字母,數字下劃線.
\s:空白符
[a-zA-Z0-9]: 大小寫字母或者是數字的單個字符
\b:單詞邊界
.:任意字符 除去回車換行
*:出現任意多次
+:至少出現一次
?:最多出現一次
x{3}: 代表著x出現3次
^: 不在[]代表以xxx開頭,在[]中代表取反
$: 代表以xxx結尾
2, 寫一個函數trim(str),去除字符串兩邊的空白字符
function trim(str) {
var reg = /\s*|\s*$/g; //^\s代表以空白開頭,后面的*代表任意多次,同理結尾的\s*$也是以*個即任意個空白符結尾的字符串
return str.replace(reg,'');
}
console.log(trim(' hello '));
3, 寫一個函數isEmail(str),判斷用戶輸入的是不是郵箱
function isEmail (str) {
// var reg = /^\w+@.+/;
var reg = /^\w+@\w+\.\w+$/;
return reg.test(str);
}
var testEmail = isEmail('1@qq.co');
console.log(testEmail); //true
4,寫一個函數isPhoneNum(str),判斷用戶輸入的是不是手機號
function isPhoneNum (str) {
var reg = /^1\d{10}$/;
return reg.test(str);
}
var testPhone = isPhoneNum('13812345678');
console.log(testPhone);//true
5,寫一個函數isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長度6-20個字符,只能包括字母、數字、下劃線)
function isValidUsername (str) {
var reg = /^\w{6,20}$/;
return reg.test(str);
}
var testUsername = isValidUsername('hellodeejay123');
console.log(testUsername);//true
6,寫一個函數isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符,只包括大寫字母、小寫字母、數字、下劃線,且至少至少包括兩種)
function isValidPassword (str) {
var reg = /^\w{6,20}$/;
var regNum = /^\d{6,20}$/;
var regUpper = /^[A-Z]{6,20}$/;
var regLower = /^[a-z]{6,20}$/;
var regUnderline = /^_{6,20}$/;
if (!reg.test(str)) {
return false;
}
else if (regNum.test(str)) {
return false;
}
else if (regUpper.test(str)) {
return false;
}
else if (regLower.test(str)) {
return false;
}
else if (regUnderline.test(str)) {
return false;
}
else {
return true;
}
}
var testPassword = isValidPassword('13asdASD__');
console.log(testPassword);
7,寫一個正則表達式,得到如下字符串里所有的顏色
var re = /*正則...*/
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) ) // ['#121212', '#AA00ef']
function getColor (str) {
var reg = /#[\dA-Fa-f]{6}|#[\dA-Fa-f]{3}(?=;)/g;
return str.match(reg);
}
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
var color = getColor(subj);
console.log(color);
8, 下面代碼輸出什么? 為什么? 改寫代碼,讓其輸出[""deejay"", ""world""].
var str = 'hello "deejay" , hello "world"';
var pat = /".*"/g;
str.match(pat);
輸出結果為:[""deejay" , hello "world""]
因為默認是貪婪模式,從第一個雙引號開始直接到最后一個雙引號進行匹配。
改寫代碼只需要改為非貪婪模式即可:
var pat = /",*?"/;