JStask7 正則表達式

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

正則簡介

題目2:寫一個函數(shù)trim(str)泰偿,去除字符串所有的空白字符

function trim(str){
  var reg = /\s/g
  var newStr = str.replace(reg,"")
  return newStr
}
var a = "        1  2    4  "
console.log(trim(a))  //"124"

### 題目2.1:寫一個函數(shù)trim(str)熟尉,去除字符串兩邊的空白字符

function trim(str){
  var reg = /^\s+|\s+$/g
  var newStr = str.replace(reg,"")
  return newStr
}
var a = "        1  2    4  "
console.log(trim(a))  //"1  2    4"

題目3: 寫一個函數(shù)isEmail(str)南用,判斷用戶輸入的是不是郵箱

//判斷郵箱
function isEmail(str){
  if(!/(\w{8,})@[a-z0-9]{2,3}\.com$/.test(str)){
        console.log("我不是郵箱")
  }else{
    console.log("歡迎使用")
  }
}
isEmail("1614527443@qq.com")

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
<label>郵箱:</label><input type="text" onblur="checkNetEase(this)" onfocus="reset(this)" placeholder="郵箱">
<script>
    function checkNetEase(mobileInput){
        var value = mobileInput.value;
        /*我對郵箱的規(guī)則不是太清楚
         *用戶名至少8位吧
         *@后面觀察qq,網(wǎng)易等,不超過3個字符
         *以.com結(jié)尾
         */
        if(!/(\w{8,})@[a-z0-9]{2,3}\.com$/.test(value)){
            mobileInput.style.borderColor = 'red';
        }
    }

    function reset(mobileInput){
        mobileInput.style.borderColor = '';
    }
</script>
</body>
</html>

題目4: 寫一個函數(shù)isPhoneNum(str),判斷用戶輸入的是不是手機號

//判斷手機號
function isPhoneNum(str){
   if(!/^1\d{10}$/.test(str)){
       console.log("不好意思,請您重新輸入手機號")
   }else{
     console.log("OK")
   }
}
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
  <input type="text" id="mobile" onblur="check(this)" onfocus="reset(this)">
  <script>
      function check(mobileInput){
          var value = mobileInput.value;
          //手機第一位是1,后面有十位數(shù)字
          if(!/^1\d{10}$/.test(value)){
              mobileInput.style.borderColor = 'red';
          }
      }

      function reset(mobileInput){
          mobileInput.style.borderColor = '';
      }
  </script>
</body>
</html>

題目5: 寫一個函數(shù)isValidUsername(str)芍锦,判斷用戶輸入的是不是合法的用戶名(長度6-20個字符竹勉,只能包括字母、數(shù)字娄琉、下劃線)

function isValidUsername(str){
  if(/^\w{6,20}$/.test(str)){
    console.log("我是合法的用戶名")
  }else{
    console.log("我不是合法的")
  }
}
isValidUsername("str1234")

題目6: 什么是貪婪模式和非貪婪模式

參考博客

貪婪模式

  • 默認情況下次乓,?, +, *, {min,}, {min, max}都是貪婪的。

先看一個正則:

var str = 'a "witch" and her "broom" is one';
str.match( /".*"/g);  //[""witch" and her "broom""]

結(jié)果匹配的不是["witch"],也不是["broom"],而是[""witch" and her "broom""]

我們來看一下正則

  1. 第一個字符是",所以正則匹配到第一個"
  2. .(點號)*(星號)點號代表任意字符星號代表任意字符重復一次到多次,沒有遇到點號不能匹配的字符,所以一直到最后
  3. 文本結(jié)束后车胡,點的匹配停止了檬输,但仍然有剩余的的正則需要匹配照瘾,即:"因此匈棘,正則引擎開始倒過來回溯,換句話說析命,就是一個字符一個字符縮減匹配主卫。
  4. 一直字符縮減到匹配到"
  5. 所以結(jié)果是[""witch" and her "broom""]

總結(jié):在貪婪(默認)模式下,正則引擎盡可能多的重復匹配字符

非貪婪模式

  • 非貪婪模式和貪婪模式相反鹃愤,可通過在代表數(shù)量的標示符后放置?來開啟非貪婪模式簇搅,如?、+?甚至是??软吐。
上一個例子
var str = 'a "witch" and her "broom" is one';
str.match(/".*?"/g )  // [""witch"", ""broom""]

驚不驚喜意不意外?結(jié)果竟然不一樣

我們繼續(xù)看一下正則

  • 看看非貪婪模式.?是怎么運轉(zhuǎn)的瘩将。
  1. 第一個字符是",所以正則匹配到第一個"
  2. 第二步一樣, .被匹配上
  3. 第三步區(qū)別來了,正則引擎嘗試用最小可能的重復次數(shù)來進行匹配,因此在.匹配了w后姿现,它立即嘗試"的匹配
  4. .重復更多的字符肠仪,再進行嘗試.
  5. 匹配,終于匹配到"witch"
  6. 因為正則是global的,所以正則引擎繼續(xù)后面的匹配备典,從引號后面的a字符開始异旧。后面有匹配到第二個字符串"broom"

總結(jié):在非貪婪模式下,正則引擎盡可能少的重復匹配字符

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末提佣,一起剝皮案震驚了整個濱河市吮蛹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌拌屏,老刑警劉巖潮针,帶你破解...
    沈念sama閱讀 212,185評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異倚喂,居然都是意外死亡然低,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,445評論 3 385
  • 文/潘曉璐 我一進店門务唐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來雳攘,“玉大人,你說我怎么就攤上這事枫笛《置穑” “怎么了?”我有些...
    開封第一講書人閱讀 157,684評論 0 348
  • 文/不壞的土叔 我叫張陵刑巧,是天一觀的道長喧兄。 經(jīng)常有香客問我,道長啊楚,這世上最難降的妖魔是什么吠冤? 我笑而不...
    開封第一講書人閱讀 56,564評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮恭理,結(jié)果婚禮上拯辙,老公的妹妹穿的比我還像新娘。我一直安慰自己颜价,他們只是感情好涯保,可當我...
    茶點故事閱讀 65,681評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著周伦,像睡著了一般夕春。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上专挪,一...
    開封第一講書人閱讀 49,874評論 1 290
  • 那天及志,我揣著相機與錄音片排,去河邊找鬼。 笑死速侈,一個胖子當著我的面吹牛划纽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播锌畸,決...
    沈念sama閱讀 39,025評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼勇劣,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了潭枣?” 一聲冷哼從身側(cè)響起比默,我...
    開封第一講書人閱讀 37,761評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盆犁,沒想到半個月后命咐,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,217評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡谐岁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,545評論 2 327
  • 正文 我和宋清朗相戀三年醋奠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伊佃。...
    茶點故事閱讀 38,694評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡窜司,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出航揉,到底是詐尸還是另有隱情塞祈,我是刑警寧澤,帶...
    沈念sama閱讀 34,351評論 4 332
  • 正文 年R本政府宣布帅涂,位于F島的核電站议薪,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏媳友。R本人自食惡果不足惜斯议,卻給世界環(huán)境...
    茶點故事閱讀 39,988評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望醇锚。 院中可真熱鬧哼御,春花似錦、人聲如沸搂抒。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,778評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽求晶。三九已至,卻和暖如春衷笋,著一層夾襖步出監(jiān)牢的瞬間芳杏,已是汗流浹背矩屁。 一陣腳步聲響...
    開封第一講書人閱讀 32,007評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留爵赵,地道東北人吝秕。 一個月前我還...
    沈念sama閱讀 46,427評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像空幻,于是被迫代替她去往敵國和親烁峭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,580評論 2 349

推薦閱讀更多精彩內(nèi)容