js正規表示式精講與實踐

2021-10-23 20:32:02 字數 4293 閱讀 2146

正規表示式使用記錄

注:整體的格式為/***xx/兩端有/包裹

匹配可以按照乙個乙個字元順序匹配,沒有指定*+?等萬用字元號的,一般要求嚴謹順序和個數

字元說明

g表示匹配全域性所有,多個,預設不加的話只匹配第乙個

例:

在做全域性匹配時候可用,比如要replace一段文字中的【a】為【b】可使用

var tempvalue = 「同乙個世界,同一片天空,同乙個夢想」;

tempvalue = tempvalue.replace(/同一/g,「統一」);

console.log(「結果是:」+tempvalue);

//結果是:統一個世界,統一片天空,統一個夢想

i不區分大小寫,預設是區分的

var tempvalue = 「one world,one dream」;

tempvalue = tempvalue.replace(/one/ig,「two」);

console.log(「結果是:」+tempvalue);

//結果是:twoworld,two dream

上述的i和g是連線在一起的,不是/i/g

^非, 匹配的時候多個^abc ==^a && ^b &&^c

例:

var tempvalue = 「同乙個世界,同乙個天空,同乙個夢想」;

tempvalue = tempvalue.replace(/同乙個[^世界]/g,「統一」);

console.log(「結果是:」+tempvalue);

//結果是:同乙個世界,統一空,統一想

注:目前看[^世界]會有乙個佔位符

^和$ ^ 匹配行首,$匹配行尾這兩個用的不是太多,可以重點關注^ 在號中的用法,表示非**

var tempvalue = 「同乙個世界,同一片天空,同乙個夢想」;

tempvalue = tempvalue.replace(/^同乙個/,「統一」);

console.log(「結果是:」+tempvalue);

//結果是:統一世界,同一片天空,同乙個夢想

——————————————————————————

var tempvalue = 「同乙個世界,同一片天空,同乙個夢想」;

tempvalue = tempvalue.replace(/夢想$/,「統一」);

console.log(「結果是:」+tempvalue);

//結果是:同乙個世界,同一片天空,同乙個統一

\s匹配任何不可見字元,包括空格、製表符、換頁符等

var tempvalue = " 同 一 個 世 界,同一片天空,同乙個夢想";

tempvalue = tempvalue.replace(/\s/g,"");// 【/\s/】沒有g的話只匹配第乙個

console.log(「結果是:」+tempvalue);

//結果是:同乙個世界,同一片天空,同乙個夢想

【.】點 ,表示匹配任意字元

匹配除"\n"和"\r"之外的任何單個字元。要匹配包括"\n"和"\r"在內的任何字元,請使用像"[\s\s]"的模式

*,+,?表示個數:**匹配前面的子表示式任意次,例如,zo*能匹配"z",也能匹配"zo"以及"zoo"。*等價於。

: + 匹配前面的子表示式一次或多次(大於等於1次),例如"zo+「能匹配"zo"以及"zoo」,但不能匹配"z"。+等價於。

:?匹配前面的子表示式零次或一次,例如,"do(es)?「可以匹配"do"或"does」。?等價於

注:由1,3可知:符號匹配的是前乙個字元,如果是多個字元,可以像3中()括起來

?的另一種用法,切換到非貪婪模式 (預設貪婪模式,貪婪模式下,匹配最大化)

當該字元緊跟在任何乙個其他限制符(*,+,?,,,)後面時,匹配模式是非貪婪的。非貪婪模式盡可能少地匹配所搜尋的字串,而預設的貪婪模式則盡可能多地匹配所搜尋的字串。例如,對於字串"oooo","o+「將盡可能多地匹配"o」,得到結果[「oooo」],而"o+?「將盡可能少地匹配"o」,得到結果 [『o』, 『o』, 『o』, 『o』]

由於正則的匹配時乙個乙個字元匹配的(()包裹也可以看作乙個整體字元),當使用6中的點匹配任意字元時(如.*表示任意多個字元,這樣往往會造成問題:匹配到第乙個符號條件後,會繼續往後匹配,往往不是我們想要的結果),可以加?號切換為非貪婪模式

舉例:替換所有的a開頭,z結尾,中間任意字元的內容為"貪婪"

var teststr = 「ajkz,adfsaakkz,fdsafsafzz」;

var teststr1 = teststr.replace(/a.z/g,「貪婪」);//貪婪模式

var teststr2 = teststr.replace(/a.?z/g,「貪婪」);//非貪婪模式

console.log(teststr1);//結果是:貪婪

console.log(teststr2);//結果是:貪婪,adfsa貪婪,fdsafsafzz

一般用於表示個數的另一種寫法-->匹配確定的n次。例如,"o「不能匹配"bob"中的"o」,但是能匹配"food"中的兩個o

-->至少匹配n次。例如,"o「不能匹配"bob"中的"o」,但能匹配"foooood"中的所有o。"o「等價於"o+」。"o「則等價於"o*」。

-->其中n<=m。最少匹配n次且最多匹配m次。例如,"o"將匹配"fooooood"中的前三個o為一組,後三個o為一組。"o「等價於"o?」

3中,請注意在逗號和兩個數之間不能有空格

( )將( 和 ) 之間的表示式定義為"組"(group)

將匹配這個表示式的字元儲存到乙個臨時區域(乙個正規表示式中最多可以儲存9個),它們可以用 \1 到\9 的符號來引用。

|將兩個匹配條件進行邏輯"或"(or)運算。

例如正規表示式(him|her) 匹配"it belongs to him"和"it belongs to her",但是不能匹配"it belongs to them."。

x|y :匹配x或y。例如,「z|food"能匹配"z"或"food」(此處請謹慎)。"[z|f]ood"則匹配"zood"或"food"。

[ ]字元集合,裡面的字元單獨存在,要與8中()為表示式區分開

1.字元集合:匹配所包含的任意乙個字元。例如,"[abc]「可以匹配"plain"中的"a」。

2.集合取反:匹配未包含的任意字元。例如,"[^abc]「可以匹配"plain"中的"plin"任一字元。

3.字元範圍:匹配指定範圍內的任意字元。」[a-z]"可以匹配"a"到"z"範圍內的任意小寫字母字元。

案例舉例

案例匹配以 a開頭,c結尾,中間是b或者f的內容,然後替換成其他字元(可以是多個)

var tempvalue =「a,ac,abc,afc,atc,att,asdwdaerrt,ddddsdad,dddse」;

tempvalue = tempvalue.replace(/a[bf]c/g,「xx」);

console.log(「結果是:」+tempvalue);

//結果是:a,ac,xx,xx,atc,att,asdwdaerrt,ddddsdad,dddse

\s

這個正則「」代表空格,也就是說」a」與「f」字之間有1-4個空格的間隔就命中。同理 \s 是0-9個空格

.

. 代表任意字元,. 是指3-6個任意字元的間隔,都可命中。

[^來後相]

[^] 代表排除或者相反,代表在這之中任意選擇,兩個組合到一起,[^來後相] 的意思是非「來或後或相」字的其他任意字元。

推薦文件:

js正規表示式 與

疑問號讓.的搜尋模式從貪婪模式變成惰性模式。var str aaa123456 bbb 會匹配 會匹配 123456 要在瀏覽器測試結果的話,輸入 var str aaa123456 bbb str.match str.match 1.貪婪匹配是先看整個字串是否匹配,如果不匹配,它會去掉字串的最後乙...

js正規表示式 與

預設是貪婪匹配 為惰性匹配 疑問號讓.的搜尋模式從貪婪模式變成惰性模式。var str aaa123456 bbb 會匹配 會匹配123456 要在瀏覽器測試結果的話,輸入 var str aaa123456 bbb str.match str.match 下面舉個簡單的例子來說明。1.貪婪匹配是先...

正規表示式實踐

正規表示式通常用來檢索 替換符合匹配某個模式的文字。字元匹配 代表任意單個字元,乙個字母 數字或漢字等 代表指定範圍內的字元,abc 表示a,b,c 這3個字母中的任意乙個 表示排除 中的字元以外的字元 alnum 所有大小寫字母和數字,數量1 alpha 所有大小寫字母,數量1 blank 代表空...