正則表達(dá)式任務(wù)

題目1:

\d,\w,\s,[a-zA-Z0-9],\b,.,*,+,?,x{3},^,$分別是什么?

  • \d 表示數(shù)字,等價(jià)[0-9]
  • \w 表示字符、字母、數(shù)字、下劃線,等價(jià) [a-zA-Z_0-9]
  • \s 表示空白符,等價(jià)[\t\n\x0B\f\r]
  • [a-zA-Z0-9] 表示小寫字母、大寫字母、數(shù)字
  • \b 表示單詞邊界
  • . 表示除了回車符、換行符之外的所有字符,等價(jià) [^\r\n]
  • * 表示 0 次或多次,等價(jià) {0,}
  • + 表示 1 次或多次,等價(jià) {1,}
  • ? 表示 0 次或 1 次,等價(jià) {0,1}
  • x{3} 表示 xxx,即 x 出現(xiàn)3次
  • ^ 表示開頭
  • $ 表示結(jié)尾

題目2:

寫一個(gè)函數(shù)trim(str),去除字符串兩邊的空白字符

function trim(str){
  return str.replace(/^\s+|\s+$/g,"");
}

var str = "   che  ng  ong    ";
trim(str);    // "che  ng  ong"

題目3:

寫一個(gè)函數(shù)isEmail(str),判斷用戶輸入的是不是郵箱

function isEmail(str){
  var reg = /^[\w|-]+@\w+\.com$/;
  return reg.test(str);
}

var str = "chengong-123@163.com";
isEmail(str);   // true

題目4:

寫一個(gè)函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機(jī)號(hào)

function isPhoneNum(str){
  var reg = /^(\+86)?-1[358]\d{9}$/;
  return reg.test(str);
}

var str = "+86-13123456789";
isPhoneNum(str);    // true

題目5:

寫一個(gè)函數(shù)isValidUsername(str),判斷用戶輸入的是不是合法的用戶名(長(zhǎng)度6-20個(gè)字符,只能包括字母、數(shù)字、下劃線)

function isValidUsername(str){
  var reg = /^\w{6,20}$/;
  return reg.test(str);
}

var str = "chengong_jirengu"
isValidUsername(str)    // true

題目6:

寫一個(gè)函數(shù)isValidPassword(str), 判斷用戶輸入的是不是合法密碼(長(zhǎng)度6-20個(gè)字符,只包括大寫字母、小寫字母、數(shù)字、下劃線,且至少包括兩種)

function isValidPassword(str){
  var reg = /^\w{6,20}$/;
  if( reg.test(str)===false ){
    return false;
  }else if( /^[A-Z]{6,20}$/.test(str)===true ){
    return false;
  }else if( /^[a-z]{6,20}$/.test(str)===true ){
    return false;
  }else if( /^\d{6,20}$/.test(str)===true ){
    return false;
  }else if( /^-{6,20}$/.test(str)===true ){
    return false;
  }else{
    return true;
  }
}

isValidPassword("Chengong_jirengu123")    // true
isValidPassword("chengong")    // false


---------------這種方法不好,如果至少包括3種,4種就麻煩了,換下面這種方法--------------

function isValidPassword(str){
  var reg = /^\w{6,20}$/;
  var count = 0;
  if(/[A-Z]/.test(str)){
    count++;
  }
  if(/[a-z]/.test(str)){
    count++;
  }
  if(/[0-9]/.test(str)){
    count++;
  }
  if(/_/.test(str)){
    count++;
  }
  return (count>=2 && reg.test(str));
}


isValidPassword("Chengong_jirengu123");    // true
isValidPassword("chengong");    // false

題目7:

寫一個(gè)正則表達(dá)式,得到如下字符串里所有的顏色

var re = /#[0-9a-fA-F]{6}/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""]  
默認(rèn)情況是貪婪模式,符合條件的.*最大范圍是hunger" , hello "world
*/

var pat2 = /".*?"/g
str.match(pat2)  
    // [""hunger"", ""world""] 改成非貪婪模式
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 文章轉(zhuǎn)載地址: http://www.open-open.com/code/view/1430625516632 ...
    得起一個(gè)清新脫俗的名字閱讀 2,293評(píng)論 1 3
  • 一、校驗(yàn)數(shù)字的表達(dá)式 二、校驗(yàn)字符的表達(dá)式 三、特殊需求表達(dá)式 一.網(wǎng)絡(luò)驗(yàn)證應(yīng)用技巧 驗(yàn)證 E-mail格式 驗(yàn)證...
    丶legend閱讀 1,508評(píng)論 0 22
  • Java的正則表達(dá)式講解:(為了能看清,本文正則表達(dá)式用中文的句號(hào)代替英文句點(diǎn)) 英文句點(diǎn)符號(hào):匹配單個(gè)任意字符。...
    紅姑娘閱讀 4,532評(píng)論 0 2
  • 一、匹配符 \:指出接著的字符為特殊字符。 ^:表示匹配的字符必須在最前邊。 $:表示匹配的字符必須在最后邊。 *...
    活叁黃輝馮閱讀 851評(píng)論 0 3
  • 忘了從哪收集的資料了,放這兒,以備不時(shí)之需。 只能輸入數(shù)字:"^[0-9]*$"。 只能輸入n位的數(shù)字:"^\d{...
    study_monkey閱讀 1,488評(píng)論 0 7

友情鏈接更多精彩內(nèi)容