用正規表示式描述:乙個有效的**號碼必須滿足以下兩種格式: (***) ***-***x 或 ***-***-***x。(x 表示乙個數字)
1、分析
(***) ***-***x 或 ***-***-***x。(x 表示乙個數字)
從規則中可以看出,只要符合上述形勢的數字組合即可。
分析 (***) ***-***x
我們把其中的規律列出來,找出固定的字元位置與可變字元的規律。
2、描述規律
最終需要用正規表示式中的普通字元、特殊字元、限定符、定位符來描述對應的規律(如上圖所示)
正規表示式的重點有三:特殊字元、限定字元、定位符
熟練掌握這三點,大部分的正則表達都不在話下~
特殊字元:勿忘加上轉義符』』
限定字元:限定字元出現的次數,掌握它也就get了精華,麻麻再也不用擔心我讀不懂漂亮的表示式了。
定位符:稍加理解,就能get到的好技巧
使用正規表示式描述上面的內容
表達 (***) ***-***x
^([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
使用限定符來限定數字出現的次數,優化為如下表達
表達 ***-***-***x
^[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]$
使用限定符來限定數字出現的次數,優化為如下表達
^[0-9]-[0-9]-[0-9]$
note: 使用標準的posix表示式中未定義\d表示數字,需要使用「擴充套件正則」的方式才行。例如sed和grep都支援此表達方式。
同時表示***-***-***x和 (***) ***-***x
使用特殊字元()和|。用()來標記乙個表示式,使用|來指明兩項之間的任意選擇。
***-***-***x和 (***) ***-***x
最終表示式如下:
^([0-9]-|([0-9]) )[0-9]-[0-9]$
附加快速檢視表
為了方便檢視,列出對應的特殊字元表以及表達方式
特殊字元 表達
特殊字元 轉義表達 特殊含義
【() () 標記乙個子表示式的開始和結束位置。子表示式可以獲取供以後使用】
【$ $ 匹配輸入字串的結尾位置】
【* * 匹配前面的子表示式零次或多次】
【+ + 匹配前面的子表示式一次或多次】
【. . 匹配除換行符 \n 之外的任何單字元】
【[ ] 標記乙個中括號表示式的開始。要匹配 [,請使用 [。】
【? ? 匹配前面的子表示式零次或一次,或指明乙個非貪婪限定符】
【\ \ 將下乙個字元標記為或特殊字元、或原義字元、或向後引用、或八進位制轉義符】
【^ ^ 匹配輸入字串的開始位置,除非在方括號表示式中使用,當該符號在方括號表示式中使用時,表示不接受該方括號表示式中的字元集合】
【{} {} 標記限定符表示式的開始】
【| | 指明兩項之間的乙個選擇】
限定符 表達含義
【* 出現次數》=0】
【+ 出現次數》=1】
? 出現次數 0 or 1, 等價
出現次數=n
出現次數》=n
n=< 出現次數<= m
定位符 表達含義
^ 字串開始的位置
$ 字串結束的位置
\b 限定單詞(字)的字元,常用來確定乙個單詞,可以結合兩個『\b』使用
\b 限定非單詞(字)邊界的字元,用的很少
最後感謝一下leedcode大佬的分享
正規表示式基礎學習
匹配字串是否含有a var reg new regexp a console.log reg.test abc 忽略大小寫匹配a var reg new regexp a i console.log reg.test abc true 相當於 var reg a i console.log reg....
正規表示式 1 正規表示式基礎
1.正規表示式基礎 正規表示式描述了一種字串匹配的模式,即可以使使用者通過一系列普通字元或特殊字元構建能夠明確描述文字字串的匹配模式,可以用來檢查某個字串是否含有某種子字串,將匹配的子字串做替換或者從某個字串中取出符合某個條件的子字串等。1.1 正規表示式的基本結構 乙個正規表示式就是由普通字元 如...
正規表示式基礎
限定符 d 匹配非負整數 正整數 0 0 9 1 9 0 9 匹配正整數 d 0 匹配非正整數 負整數 0 0 9 1 9 0 9 匹配負整數 d 匹配整數 d d 匹配非負浮點數 正浮點數 0 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 匹配正浮點數 d...