1. \d沿盅,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^$分別是什么?
- \d 表示數(shù)字字符
- \w 表示文本字符童谒,字母塞帐、數(shù)字拦赠、下劃線(\W 大寫表示屬性相反的字符)
- \s 匹配空格(包括制表符、空格符葵姥、斷行符等)荷鼠,相等于[\t\r\n\v\f]
- [a-zA-Z0-9] 表示與(a到Z,A到Z榔幸,0-9的任何字符匹配)
- \b 匹配詞的邊界
- . 表示匹配任意字符 /c.b/ cab允乐、c7b、c-b都可進行匹配
- 表示一個模式出現(xiàn)0次貨多次
- 表示一個模式出現(xiàn)1次貨多次
- 削咆?表示一個模式出現(xiàn)0次或者1次
- x{3} 模式的精準匹配次數(shù){n}表示重復(fù)n次牍疏,{n,}表示至少重復(fù)n次拨齐,{n鳞陨,x}表示重復(fù)次數(shù)在n-x之間
- ^ 例如 /^ab/ 表示以ab開頭的字符
- $ 例如 /$cd/ 表示以cd結(jié)尾的字符
2. 貪婪模式和非貪婪模式指什么?
貪婪和非貪婪模式是指字符串量詞在進行匹配時,貪婪模式按照最大可匹配數(shù)進行匹配奏黑,
而非貪婪模式匹配一次則就停止;如沒有進行說明编矾,默認是進行貪婪模式
3. 寫一個函數(shù)trim(str)熟史,去除字符串兩邊的空白字符
function trim(str){
return str.replace(/^\s+|\s+$/g,"");
}
trim(" dff ")
4. 使用正則實現(xiàn) addClass(el, cls)、hasClass(el, cls)窄俏、removeClass(el,cls)
function hasClass(el,cls){
var reg=new RegExp(' "\\s|^"+cls+"\\b|$" ',"g");
return reg.test(el.className)
}
if(reg.test(el.className)){
console.log("has "+cls)
}else{
console.log("don't has "+cls)
}
function addClass(el,cls){
var reg=new RegExp(' "\\s|^"+cls+"\\b|$" ',"g");
return reg.test(el.className)
}
if(reg.test(el.className)){
console.log("alread has "+cls)
}else{
console.log(el.className+cls)
}
function addClass(el,cls){
var reg=new RegExp(' "\\s|^"+cls+"\\b|$" ',"g");
return reg.test(el.className)
}
if(reg.test(el.className)){
var new=el.className.replace(cls,"")
console.log(new)
}else{
console.log("don't has "+cls)
}
5. 寫一個函數(shù)isEmail(str)蹂匹,判斷用戶輸入的是不是郵箱
function isEmail(str){
var email=/\w{5,20}@\w{1,5}\.[^@]/;
return email.test(str);
}
6. 寫一個函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機號
function isPhoneNum(str){
var phonenum=/1[3578]\d{9}/
return phonenum.test(str);
}
7. 寫一個函數(shù)isValidUsername(str)凹蜈,判斷用戶輸入的是不是合法的用戶名(長度6-20個字符限寞,只能包括字母忍啸、數(shù)字、下劃線)
function isValidUsername(str){
var validname=/^\w{6,20}$/;
return validname.test(str);
}
QQ截圖20160912153425.png
8. 寫一個函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符履植,包括大寫字母计雌、小寫字母、數(shù)字玫霎、下劃線至少兩種)
function isValidPassword(str){
var reg = /^\w{6,20}$/,
capital = /^[A-Z]{6,20}$/,
lowercase = /^[a-z]{6,20}$/,
digit = /^\d{6,20}$/,
underline = /^_{6,20}$/;
if(reg.test(str)){
if(capital.test(str) | lowercase.test(str) | digit.test(str) | underline.test(str)){
return false;
}else{
return true;
}
}else{
return false;
}
}
先判斷密碼是否是6-20個\w組成的字符凿滤,然后在判斷是否為單一的屬性
11. 寫一個正則表達式,得到如下字符串里所有的顏色(#121212)
var re= /#[0-9a-zA-Z]{6}/g;
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee #fd2 ";
alert(subj.match(re))
10. 下面代碼輸出什么? 為什么? 改寫代碼庶近,讓其輸出hunger, world
var str = 'hello "hunger" , hello "world"'; //非貪婪模式
var pat = /".*?"/g;
str.match(pat);
var str = 'hello "hunger" , hello "world"'; //貪婪模式
var pat = /"[^"]*"/g;
str.match(pat);
11. 補全如下正則表達式翁脆,輸出字符串中的注釋內(nèi)容
str = '.. <!-- My -- comment \n test --> .. <!----> .. ' //非貪婪模式
var re = /<[^]*?>/g
str.match(re)
str = '.. <!-- My -- comment \n test --> .. <!----> .. '//貪婪模式
var re = /<[^<]*>/g
str.match(re)
12.補全如下正則表達式
var re = /<\w[^]*?>/g
var str = '<> <a href="/"> <input type="radio" checked> <b>'
str.match(re)