\d哗伯,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$
分別是什么?
字符中大致可分為四類
范圍類
[a-zA-Z0-9]
:匹配一個(gè)字符臊泌,這個(gè)字符可以是大寫字母刁赖、小寫字母逛钻、數(shù)字中的任意一個(gè)
預(yù)定義類
\d
:數(shù)字字符,等價(jià)于[0-9]
\w
:?jiǎn)卧~字符雨女,字母谚攒、數(shù)字下劃線,等價(jià)于[a-zA-Z_0-9]
\s
:空白符戚篙,等價(jià)于[\t\n\x0B\f\r]
.
:除了回車符和換行符之外的所有字符五鲫,等價(jià)于[^\r\n]
邊界類
\b
:?jiǎn)卧~邊界
^
:以xxx開(kāi)頭(在[]
中使用時(shí)為取反)
$
:以xxx結(jié)尾
量詞
*
:出現(xiàn)零次或多次(任意次)
+
:出現(xiàn)一次或多次(至少出現(xiàn)一次)
?
:出現(xiàn)零次或一次(最多出現(xiàn)一次)
寫一個(gè)函數(shù)trim(str)
去除字符串兩邊的空白字符
function trim(str) {
return str.replace(/^\s+|\s+$/g, '');
}
trim(' NinthG ')
寫一個(gè)函數(shù)isEmail(str)
判斷用戶輸入的是不是郵箱
// 判斷依據(jù):
//郵箱格式xxxx@xx.com,即若干字符鏈接'@'后溺职,連接若干字符岔擂,再連接'.'后接'com'
function isEmail(str) {
return /^\w*@\w*\.\w*$/.test(str)?'合法輸入':'非法輸入' //以單詞字符開(kāi)頭后接'@'后接若干字符位喂,接'.'再接若干字符,最后以三目運(yùn)算符輸出檢測(cè)結(jié)果
}
//測(cè)試輸出
isEmail('joaisjoas@.askda.asfa')
"非法輸入"
isEmail('joaisjoas@askda.asfa')
"合法輸入"
isEmail('j oaisjoas@askda.asfa')
"非法輸入"
寫一個(gè)函數(shù)isPhoneNum(str)
判斷用戶輸入的是不是手機(jī)號(hào)
// 判斷依據(jù):以1開(kāi)頭的連續(xù)11位數(shù)字
function isPhoneNum(str) {
return /^1\d{10}$/.test(str)?'合法輸入':'非法輸入' //以1開(kāi)頭后接10個(gè)數(shù)組,最后以三目運(yùn)算符輸出檢測(cè)結(jié)果
}
//測(cè)試輸出
isPhoneNum('12345678910')
"合法輸入"
isPhoneNum('13051941205')
"合法輸入"
isPhoneNum('13051941205999')
"非法輸入"
isPhoneNum('a13051941205999')
"非法輸入"
寫一個(gè)函數(shù)isValidUsername(str)
判斷用戶輸入的是不是合法的用戶名(長(zhǎng)度6-20個(gè)字符乱灵,只能包括字母塑崖、數(shù)字、下劃線)
// 判斷依據(jù):以1開(kāi)頭的連續(xù)11位數(shù)字
function isValidUsername(str) {
return /^\w{6,20}$/.test(str)?'合法輸入':'非法輸入' //6~20個(gè)單詞字符痛倚,最后以三目運(yùn)算符輸出檢測(cè)結(jié)果
}
//測(cè)試輸出
isValidUsername('abcdefghijklmnopqrst')
"合法輸入"
isValidUsername('abcdefghi_jklmnopqrst')
"非法輸入"
isValidUsername('abcde')
"非法輸入"
貪婪模式與非貪婪模式
這個(gè)模式的區(qū)別主要針對(duì)于{x,y}
的量詞形式规婆,闡述的是:在同時(shí)滿足x和y的情況下到底取x還是y的區(qū)別
貪婪模式
根據(jù)課件及查閱,我們可以知道蝉稳,在未做特殊聲明時(shí)抒蚜,默認(rèn)是使用貪婪模式,結(jié)合上面的例子耘戚,也就是說(shuō)默認(rèn)會(huì)取y個(gè)嗡髓,這個(gè)模式叫做貪婪模式
非貪婪模式
而我們有的時(shí)候用到正則中的范圍量詞時(shí),有特殊需求收津,需要少取多次
的時(shí)候饿这,就需要用到非貪婪模式,也就是希望取x撞秋,如果都滿足长捧,那就取多次,這叫做非貪婪模式吻贿,簡(jiǎn)單來(lái)書就是在量詞后加上?
舉例
var str = '0123456789'
// 貪婪模式
str.match(/\d{3,4}/g)
(2) ["0123", "4567"]
str.match(/\d{3,5}/g)
(2) ["01234", "56789"]
// 非貪婪模式
str.match(/\d{3,5}?/g)
(3) ["012", "345", "678"]
str.match(/\d{4,5}?/g)
(2) ["0123", "4567"]
簡(jiǎn)單的總結(jié)來(lái)說(shuō)串结,貪婪模式,在兩個(gè)參數(shù)均滿足情況下舅列,優(yōu)先考慮y
奉芦,而非貪婪模式,優(yōu)先考慮x