js的再學習(四)

2021-10-02 02:27:23 字數 3012 閱讀 5545

使用方法

var reg =

newregexp()

reg =

/\d+

/// 這就是乙個正規表示式

建立正則的兩種方式以及區別
let reg =

/\d+/

let reg2 =

newregexp

("\\d+"

)

特殊元字元

組合元字元

let  reg =

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

reg.

exec

('412723199412351241'

)// 得到的就是乙個陣列["412723199412351241", "412723", "1994", "12", "35", "4", "1", index: 0, input: "412723199412351241", groups: undefined]

reg =

/(\d)

(\d)

(\d)

///分組捕獲』

reg.

exec

('123'

)// 上面分組捕獲得到的陣列 ["123", "1", "2", "3", index: 0, input: "123", groups: undefined]

每執行一次exec()只能捕獲到乙個符合正則規則的,就是執行100遍也只捕獲第乙個,這就是正則捕獲的懶惰性(解決辦法用全域性修飾符g)
//懶惰性解釋

var str =

'a12a21a'

reg =

/a/reg.

exec

(str)

// 如果我們需要捕獲str中的所有a,那麼我們使用exec進行捕獲的時候,只能拿到第一次捕獲的

//因就是lastindex永遠不會自動改變,它預設一直都是0就是說他無論執行多少次,他都是

//從索引0開始捕獲

// 但是如果我們給正則使用修飾符g的時候。可以改變lastindex的值

使用exec進行分組捕獲的時候,如果想要只匹配不捕獲的時候,我們可以使用(?:)不捕獲
let  reg =/^

(\d)

(\d)

(\d)

(\d)\d

(\d)(?

:\d|

x)$/

// 這樣的話最後乙個分組的就只匹配不捕獲了

reg.

exec

('412723199412351241'

)// 返回值的陣列中沒有最後乙個分組的值

分組引用
let str =

'book'

// look good food 類似於這種帶有重複字母的字串,我們使用分組引用進行匹配

let reg =/^

[a-za-z]

([a-za-z]

)\1[a-za-

z]$/

// 在分組後面使用 \1可以讓分組後面出現乙個同分組一樣的字元 類似於([a-za-z])/1

正則捕獲的貪婪性
var str =

'123@1233'

reg =

/\d+/g

str.

match

(reg)

// 獲得的結果應該["123", "1233"] ,但是\d+應該拿到的是1到多個連續數字,但是他拿到的是正則匹配的最長結果

// 我們可以在量詞後面設定?取消貪婪性, reg = /\d+?/g(按照正則匹配的最短結果來獲取)

let str =

'zhufeng@2019|zhufeng@2020'

=>把字串珠峰全部替換成漢字珠峰

str = str.

replace

("zhufeng"

,"珠峰"

)// 這樣執行一次只替換一次,如果使用兩個repalce方式可以替換兩次

//但是如果我們把zhufeng替換成zhufengpeixun這樣就是不能使用上面那種方式替換,因為會出現zhufengpeixunpeixun這種情況,每一種替換都是從字串的首字元開始,這就類似於正則的懶惰性

// 使用正則一次性替換所有zhunfeng

str = str.

replace

(/zhufeng/g

,"珠峰"

)

//案例 把字串進行處理

let time =

'2019-08-13'

// 把上面字串變為2023年08月13日

let reg =

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

time = time.

replace

(reg,

"$1年$2月$3日"

)// 得到"2023年08月13日"

// 原理就是replace這個方法,傳入乙個正則,這個正則匹配一次有三個分組,然後我們可以使用$1,$2,$3拿到匹配到的第一二三個分組

// 上面的**還可以寫成下面這種方式

time = time.

replace

(reg,

(big,$1

,$2,$3

)=>

)

案例:單詞的首字母大寫
let str =

'good googd study, day day up!'

let reg =

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

;str = str.

replace

(reg,

(...arg)

=>

)

案例:時間字串的格式化

js的再學習(三)

document.getelementbyid 指定在文件中基於元素的id或者這個元素物件 只取第乙個 document.getelementsbyname 在整個文件中通過標籤的name屬性值獲取一組節點集合 一般用於表單的獲取 document.head document.body docume...

學習學習再學習

如果乙個技能足夠複雜 比如從零學程式設計 那就不要指望讀完一本書就可以打天下。多買幾本書同類的書 因為每個作者的出發點是不一樣的,哪怕對同乙個概念都有不同的解釋說明。理解知識的重要過程之一就如牛的反芻一樣,要嚼一遍 嚥下去 再吐出來 再嚼一遍 再嚥下去 所以,既然一本書可以讀幾遍,那麼同一話題多應該...

學習 學習 再學習

原本要使用vs2005開發乙個b s專案的,沒有想到只能先暫時停停了,居然跟不上技術的發展了,呵呵,一直使用delphi delphi也沒能跟上 沒有想到轉到vs2005上竟然有這麼多要學的東西,當然目的是了做乙個好的系統。最近一直在學習asp.net ajax,雖然專案停了,但是我覺得值得,有很多...