http://www.cnblogs.com/yitian/archive/2008/11/14/1333569.html
題目1: \d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?
下面是一些常見的元字符:
. 匹配除 \n 以外的任何字符(注意元字符是小數點)。
[abcde] 匹配 abcde 之中的任意一個字符
[a-h] 匹配 a 到 h 之間的任意一個字符
[^fgh] 不與 fgh 之中的任意一個字符匹配
\w 匹配大小寫英文字符及數字 0 到 9 之間的任意一個及下劃線,相當于 [a-zA-Z0-9_]
\W 不匹配大小寫英文字符及數字 0 到 9 之間的任意一個,相當于 [^a-zA-Z0-9_]
\s 匹配任何空白字符,相當于 [ \f\n\r\t\v]
\S 匹配任何非空白字符,相當于 [^\s]
\d 匹配任何 0 到 9 之間的單個數字,相當于 [0-9]
\D 不匹配任何 0 到 9 之間的單個數字,相當于 [^0-9]
[\u4e00-\u9fa5] 匹配任意單個漢字(這里用的是 Unicode 編碼表示漢字的 )
下面是一些常見的限定符 ( 下表中 n 和 m 都是表示整數,并且 0<n<m) :
* 匹配 0 到多個元字符,相當于 {0,}
? 匹配 0 到 1 個元字符,相當于 {0,1}
{n} 匹配 n 個元字符
{n,} 匹配至少 n 個元字符
{n,m} 匹配 n 到 m 個元字符
+ 匹配至少 1 個元字符,相當于 {1,}
\b 匹配單詞邊界
^ 字符串必須以指定的字符開始
$ 字符串必須以指定的字符結束
另外題目中的
[a-zA-Z0-9] 包含所有英文小寫字母a-z和大寫字母A-Z,以及數字0-9
x{3} 量詞,表示x出現3次
題目2: 寫一個函數trim(str),去除字符串兩邊的空白字符
function trim(str){
if(typeof str === 'string'){
return str.replace(/^\s+|\s+$/g,'');
}else{
return '不是字符串';
}
}
題目3: 寫一個函數isEmail(str),判斷用戶輸入的是不是郵箱
function isEmail(str){
var email = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
return email.test(str);
}
題目4: 寫一個函數isPhoneNum(str),判斷用戶輸入的是不是手機號
function isPhoneNum(str){
var num = /^1[0-9]{10}$/;
return num.test(str);
}
題目5: 寫一個函數isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長度6-20個字符,只能包括字母、數字、下劃線)
function isVaildUsername(str){
return /^\w{6,20}$/.test(str);
}
題目6: 寫一個函數isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長度6-20個字符,只包括大寫字母、小寫字母、數字、下劃線,且至少至少包括兩種)
function isValidPassword(str){
if(!/^\w{6,20}$/.test(str)){
return false;
}
if(/^\d{6,20}$/.test(str)){
return false;
}
if(/^[a-z]{6,20}$/.test(str)){
return false;
}
if(/^[A-Z]{6,20}$/.test(str)){
return false;
}
if(/^_{6,20}$/.test(str)){
return false;
}
return true;
}
題目7: 寫一個正則表達式,得到如下字符串里所有的顏色
var reg = /#([0-9a-fA-F]{6}|[0-9a-fA-F]{3})(?=;)/g;
var subj = "color: #121212; background-color: #AA00ef; width: 12px; bad-colors: f#fddee "
console.log( subj.match(re) ) // ['#121212', '#AA00ef']
題目8: 下面代碼輸出什么? 為什么? 改寫代碼,讓其輸出[""hunger"", ""world""].
var str = 'hello "hunger" , hello "world"';
var pat = /".*"/g;
str.match(pat);
意思是:匹配以"開頭"結束,且引號中為任意個除換行符和回車以外的任意字符,全局匹配。
默認是貪婪模式,會盡可能多匹配,所以結果為
[""hunger" , hello "world""]
而要想得到[""hunger"", ""world""]的結果可以將正則改為如下代碼:
可以加上?變成非貪婪模式 盡可能少匹配
var pat = /".*?"/g;