\d盆驹,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?
\d 查找數(shù)字。
\w 查找單詞字符滩愁。
\s 查找空白字符躯喇。
[a-zA-Z0-9] 查找任何從 0 至 9 的數(shù)字和任何 a 到 z 的大小寫字符。硝枉。
\b 匹配單詞邊界廉丽。
. 查找單個字符,除了換行和行結(jié)束符妻味。
* 匹配任何包含零個或多個字符串正压。
+ 匹配任何包含至少一個字符串。
? 匹配任何包含零個或一個字符串责球。
x{3} 匹配包含 3個 x 的序列的字符串焦履。
x^ 匹配任何結(jié)尾為 x 的字符串。
x$ 匹配任何結(jié)尾為 x 的字符串凿将。
寫一個函數(shù)trim(str),去除字符串兩邊的空白字符
function trim(str){
var reg = /^\s|\s$/g;
return str.replace(reg,"");
}
console.log(trim(" qwe ert tyu"));//"qwe ert tyu"
寫一個函數(shù)isEmail(str)犀变,判斷用戶輸入的是不是郵箱
function isEmail(str){
var reg = /^\w+@.+$/;
return reg.test(str)
}
console.log(isEmail("xqxq2@163.com"));//true
console.log(isEmail("xqx163.com"));//false
寫一個函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機號
function isPhoneNum(PhoneNum){
var dico = /^1\d{10}$/;
return dico.test(PhoneNum);
}
console.log(isPhoneNum("13000000008")); // true
寫一個函數(shù)isValidUsername(str)骇笔,判斷用戶輸入的是不是合法的用戶名(長度6-20個字符懦傍,只能包括字母、數(shù)字虚吟、下劃線)
function isValidUsername(str){
var reg = /^\w{6,20}$/;
return reg.test(str)
}
console.log(isValidUsername("qqwe2222"));//true
console.log(isValidUsername("1234"));//false
寫一個函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符偏塞,只包括大寫字母灸叼、小寫字母、數(shù)字沧卢、下劃線但狭,且至少至少包括兩種)
function isValidPassword(str){
if(!/^\w{6,20}$/.test(str)){
return false
}else if(/(^\d+$)|(^[a-z]+$)|(^[A-Z]+$)|(^_+$)/.test(str)){
return false
}else{
return true
}
}
console.log(isValidPassword("1111111111d"));//true
console.log(isValidPassword("23d"));//false
console.log(isValidPassword("333333333"));//false
寫一個正則表達式呈队,得到如下字符串里所有的顏色
var re = /#[a-fA-f0-9]{6}(?=;)|#[a-fA-f0-9]{3}(?=;)/g;
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) ) // ['#121212', '#AA00ef']
下面代碼輸出什么? 為什么? 改寫代碼,讓其輸出[""hunger"", ""world""].
輸出:[""hunger" , hello "world""]
因為量詞在默認(rèn)下是貪婪模式几于,會匹配最多的字符串。
解決辦法為加一個喉刘? 變成非貪婪模式睦裳。
改寫
var str = 'hello "hunger" , hello "world"';
var pat = /".*?"/g;
str.match(pat); //[""hunger"", ""world""].