正規表示式 常用的正規表示式級正則的捕獲

2021-10-12 07:31:26 字數 3321 閱讀 8962

/*

* 規則分析

* 1. 可能出現 + - ,也可能不出現

* 2. 一位0-9都可以,多位首位不能為0

* 3.小數部分可能有可能沒有,一旦有後面必須有小數點加數字

*/let reg =

/^[+-]?(\d|([1-9]\d+))(\.\d+)?$/

;

// 數字、字母、下劃線

// 6 - 16位

let reg =

/^\w$/

;

/*

* 1. 漢字 /^[\u4e00-\u9fa5]$/

* 2. 長度 2~10 位

* 3. 可能有譯名 ·漢字

*/let reg =

/^[\u4e00-\u9fa5](·[\u4e00-\u9fa5])$/

let reg =

/^\w+((-\w+)|(\.\w+))*@[a-za-z0-9]+((\.|-)[a-za-z0-9]+)*\.[a-za-z0-9]+$/

/*

* 1. 共18位

* 2. 最後一位可能是x

* 3. 身份證號前六位:省市縣

* 4. 中間8位:出生年月日

* 5. 最後四位:

* 最後一位:x或數字

* 倒數第二位:偶數:女,奇數:男

* 其餘的是經過演算法算出來的

*///小括號的第二個作用:分組捕獲,不僅可以把大正則匹配的資訊捕獲到,還可以單獨捕獲到每個小分組的內容

let reg =

/^(\d)(\d)(\d)(\d)\d(\d)(\d|x)$/

字串string.prototype上支援正規表示式的處理方法

let str =

"alvin2019yangfan2020qihang2021"

;let reg =

/\d+/

每執行一次exec只能捕獲到乙個符合正則規則的,但是預設情況下,不管執行多少遍,獲取的結果都是第乙個匹配到的,其餘的捕獲不到

正則的懶惰性:預設值捕獲第乙個,懶惰性的原因是:預設情況下lastindex值不會被改變,每次都是從字串開始位置查詢。

/*

* 需求:由於exec每次只能捕獲一次,需要編寫乙個execall,執行一次可以把所有匹配的結果都捕獲到(前提是正則一定要設定全域性修飾符g)

* 字串中的match方法可以在執行一次,捕獲到所有匹配的資料(前提是也需要設定全域性修飾符g)*/~

function()

return ary;

} regexp.prototype.execall = execall;}(

);let reg =

/\d+/g

console.

log(reg.

execall

(str)

);

//以身份證號為例:

let str =

"130828199001061235"

let reg =

/^(\d)(\d(\d)(\d)\d(\d)(\d|x))$/

;console.

log(reg.

exec

(str));

console.

log(str.

match

(reg)

);

let str =

"年月日"

;let reg =

/\/g

;console.

log(reg.

test

(str));

//true

cosole.

log(regexp.$1);

//0

let str =

"alvin@2019|alvin@2020"

;// 把字串中所有的alvin替換成成hello

// 因為字串的replace方法每次只能替換乙個,所以這裡就需要呼叫2次,如果是替換多個的話就需要呼叫多次很麻煩

// 這裡我們就可以通過正則來配合使用實現一次全部替換

let reg =

/alvin/g

str.

replace

(reg,

"hello"

);

let str =

"2019-08-13"

;//變為2023年08月13日

let reg =

/^(\d)-(\d)-(\d)$/

;//方案一

let time = str.

replace

(reg,

"$1年$2月$3日");

console.

log(time)

;//方案二:[str].replace([reg],[function])

//首先用reg和time進行匹配捕獲,能匹配到幾次就會把傳遞的函式執行幾次,而且是匹配一次就執行

//不僅把方法執行,而且replace還給方法傳遞了實參資訊(和exec捕獲的內容一致的資訊:大正則匹配的內容和小分組匹配的內容)

//函式中返回的是啥就把匹配的內容替換成啥

time = str.

replace

(reg,

(all, $1

,$2,$3

)=>

);

let str =

"good good study, day day up!"

;let reg =

/\b([a-za-z])[a-za-z]*\b/g

;// \b表示單詞邊界

str = str.

replace

(reg,

(...arg)

=>

)console.

log(str)

;

正規表示式 常用正規表示式

一 校驗數字的表示式 1 數字 0 9 2 n位的數字 d 3 至少n位的數字 d 4 m n位的數字 d 5 零和非零開頭的數字 0 1 9 0 9 6 非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7 帶1 2位小數的正數或負數 d d 8 正數 負數 和小數 d d 9 有兩位小數的...

正規表示式 常用正規表示式

網域名稱 a za z0 9 a za z0 9 a za z0 9 a za z0 9 interneturl a za z s 或 http w w w 手機號碼 13 0 9 14 5 7 15 0 1 2 3 4 5 6 7 8 9 18 0 1 2 3 5 6 7 8 9 d 或者 1 3...

正規表示式 常用表示式

羅馬數字 string p1 m d?c c dm l?x x lc v?i i vx string t1 vii match m1 regex.match t1,p1 交換前二個單詞 string t2 the quick brown fox string p2 s s s regex x2 ne...