使用方法
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,雖然專案停了,但是我覺得值得,有很多...