成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript 正則表達(dá)式

woshicixide / 420人閱讀

摘要:正則表達(dá)式對(duì)象通過內(nèi)置對(duì)象支持正則表達(dá)式。做法很簡(jiǎn)單,就是在量詞后添加一個(gè)即可分組分組或分組取值前瞻正則表達(dá)式是從文本頭部向尾部解析。

正則表達(dá)式 REGEXP對(duì)象

javascript通過內(nèi)置對(duì)象Regexp支持正則表達(dá)式。

兩種方法來創(chuàng)建Regexp對(duì)象。

1、字面量

var reg = /d{4}/g;
// g 表示進(jìn)行全局替換

2、構(gòu)造函數(shù)

var reg = new RegExp("d{4}","g");

// 這里因?yàn)槭亲址?,需要?duì)特殊字符進(jìn)行轉(zhuǎn)義
// 利用正則進(jìn)行文本替換
var reg = new RegExp("is","g");
"what is this?".replace(reg, "IS");

// "what IS this?"
修飾符

g : global 全文搜索,如果不添加的話,搜索到第一個(gè)就匹配停止

i : ignore case 忽略大小寫,默認(rèn)大小寫敏感

m : multiple lines 多行搜索

"He is a boy. Is he?".replace(/is/g, "0");
// "He 0 a boy. Is he?"

"He is a boy. Is he?".replace(/is/gi, "0");
// "He 0 a boy. 0 he?"
元字符

正則表達(dá)式中有著兩種基本字符,原義文本字符元字符;

原義文本字符: a b f r ...

元字符: 指有特殊含義的非字母字符 b t ...

正則表達(dá)式中的特殊字符: * + ? $ ^ . | [] {} ()

字符類

我們可以使用 元字符 [] 來構(gòu)造一個(gè)簡(jiǎn)單的類

所謂類,就是符合某一個(gè)特征的對(duì)象,是泛指。

[abc]a b c 歸為一類,表達(dá)式可以匹配這類字符

使用 ^可以取反,創(chuàng)建反向類,表示匹配不符合的字符

"a1b3c342bb".replace(/[abc]/g, "X");
// "X1X3X342XX"

"a1b3c342bb".replace(/[^abc]/g, "X");
// "aXbXcXXXbb"
范圍類

使用 [a-z]來鏈接兩個(gè)字符表示從 az的任意字符;

[a-zA-Z0-9]

預(yù)定義類和邊界

預(yù)定義類

* .  [^
]  除了回車換行之外的任意字符

* d [0-9]    數(shù)字

* D [^0-9]   非數(shù)字

* s [	
f
x0B]  空白符

* S [^	
f
x0B] 非空白符

* w [0-9a-zA-Z_]  字母數(shù)字下劃線

* W [^0-9a-zA-Z_] 非字母數(shù)字下劃線

邊界

^ 開頭

$ 結(jié)尾

b 單詞邊界

B 非單詞邊界

"@abc@ab@".replace(/@./g, "Q");
// "QbcQb@"

"@abc@ab@".replace(/^@./g, "Q");
// "Qbc@ab@"

"@abc@ab@".replace(/.@$/g, "Q");
// "@abc@aQ"
// 驗(yàn)證 m 表示多行搜索
var mulSrt="@123
@456
%890";

mulSrt.replace(/@d/gm, "X");

"X23
X56
%890"
量詞
* ?  出現(xiàn)0次或者一次   0/1

* +  至少出現(xiàn)1次      >= 1

* *  出現(xiàn)零次或者一次  >= 0 

* {n} 出現(xiàn)n次

* {n, m} 出現(xiàn) n 到 m 次

* {n, }  至少出現(xiàn)n 次
貪婪模式和非貪婪模式
/d{3,6}/

匹配 12345678 得到 123456

// 這就是貪婪模式

非貪婪模式

讓正則表達(dá)式盡可能的少匹配,也就是說一旦匹配成功就不在繼續(xù)嘗試。[做法很簡(jiǎn)單,就是在量詞后添加一個(gè)?即可]

/d{3,5}?/g
分組

()分組

"a1b2c3d4".replace(/[a-z]d{3}/g, "X");
// a1b2c3d4

"a1b2c3d4".replace(/([a-z]d){3}/g, "X");
// Xd4

或 |

"meiaals".replace(/[a-z]+(aa|bb)[a-z]+/g, "0");
// 0

"meibbls".replace(/[a-z]+(aa|bb)[a-z]+/g, "0");
// 0

分組取值

"2016-04-23".replace(/(d{4})-(d{2})-(d{2})/, "$3-$2-$1");

// "23-04-2016"
前瞻

“正則表達(dá)式是從文本頭部向尾部解析”。這就像在走路,沒走過的路在你的前面,需要你往前看(前瞻);走過的路需要你回頭看(后顧)

[js不支持后顧]

正向前瞻exp(?=assert)

負(fù)向前瞻exp(?!assert)

"a2*3".replace(/w(?=d)/g, "X");
// "X2*3"

對(duì)象屬性

global:是否全文搜索,默認(rèn)false

ignore case:是否大小寫敏感,默認(rèn)是false

multiline:多行搜索,默認(rèn)值是false

lastIndex:當(dāng)前表達(dá)式匹配內(nèi)容的最后一個(gè)字符的下一個(gè)位置

source:正則表達(dá)式的文本字符串

let regex = /(d{4}1)-(d{2})-(d{2})/g;

regex.source
// "(d{4}1)-(d{2})-(d{2})"
RegExp對(duì)象本身的方法

RegExp.prototype.test(str)

用戶測(cè)試某一個(gè)字符串是否存在匹配正則表達(dá)式模式的字符串,如果存在就返回true 、 否則 返回 false。

var reg2=/w/g;

進(jìn)行reg2.test("ab")時(shí),第三次會(huì)變成false

原因:
while(reg2.test("ab")){
   console.log(reg2.lastIndex);
}

RegExp.prototype.exec(str)

如果沒有匹配返回null,如果匹配成功,返回一個(gè)數(shù)組。(index: 匹配文本的第一個(gè)字符的位置,input: 存放被檢索的字符串的string);

var reg = /d(w)(w)d/g;

var str = "$1ab343sdd5ef6";
var ret;
while(ret = reg.exec(str)) {
    console.log(ret[0] +"-"+ret[1] +"-"+ret[2]); 
    console.log(ret.index); 
}
// ["1ab3", "a", "b", index: 1, input: "$1ab343sdd5ef6", groups: undefined]

// ["5ef6", "e", "f", index: 10, input: "$1ab343sdd5ef6", groups: undefined]

// 第一個(gè)為匹配的字符串, 第二項(xiàng)之后都是分組內(nèi)容
String對(duì)象本身的方法

String.prototype.search(reg)

用于檢索字符串中指定的子字符串、或者檢索于正則匹配的子字符串。返回一個(gè)index, 如果沒有找到返回-1. [忽略g,并且每次都是從開頭匹配];

"wwasdasf7".search(/d/);
// 8

String.prototype.match(reg)

match方法將檢索字符串,以找到一個(gè)或者多個(gè)與regexp匹配的文本。
(是否有g(shù)影響很大)

如果找到了就返回一個(gè)數(shù)組,如果沒有找到,返回null

var reg = /d(w)(w)d/g;

var str = "$1ab343sdd5ef6";
var ret = str.match(reg);
console.log(ret);
// ["1ab3", "5ef6"]

String.prototype.split(str/reg)

"a,d,f,g,h".split(",");
// ["a", "d", "f", "g", "h"]

"a1b1c2d3f5".split(/d/g);
// ["a", "b", "c", "d", "f", ""]

String.prototype.replace(str, replacestr)

"asd231".replace("2", "S");

String.prototype.replace(reg, replacestr)

"asd231".replace(/d+/g, "S");

String.prototype.replace(reg, function)

// a1b2c3d4 => z2b3c4d5

"a1b2c3d4".replace(/d/g, function(match, index, origin){
    console.log(index);
    return parseInt(match) + 1;
})
// "a2b3c4d5"

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/96573.html

相關(guān)文章

  • 正則達(dá)式

    摘要:本文內(nèi)容共正則表達(dá)式火拼系列正則表達(dá)式回溯法原理學(xué)習(xí)正則表達(dá)式,是需要懂點(diǎn)兒匹配原理的。正則表達(dá)式迷你書問世了讓幫你生成和解析參數(shù)字符串最全正則表達(dá)式總結(jié)驗(yàn)證號(hào)手機(jī)號(hào)中文郵編身份證地址等是正則表達(dá)式的縮寫,作用是對(duì)字符串執(zhí)行模式匹配。 JS 的正則表達(dá)式 正則表達(dá)式 一種幾乎可以在所有的程序設(shè)計(jì)語言里和所有的計(jì)算機(jī)平臺(tái)上使用的文字處理工具。它可以用來查找特定的信息(搜索),也可以用來查...

    bang590 評(píng)論0 收藏0
  • JavaScript正則達(dá)式的匹配模式

    摘要:選擇分組和引用正則表達(dá)式的語法還包括指定選擇項(xiàng)子表達(dá)式分組和引用前一子表達(dá)式的特殊字符。帶圓括號(hào)的表達(dá)式的另一個(gè)用途是允許在同一正則表達(dá)式的后部引用前面的子表達(dá)式。 正則表達(dá)式(regular expression)是一個(gè)描述字符模式的對(duì)象。JavaScript的 RegExp類 表示正則表達(dá)式,String和RegExp都定義了方法,后者使用正則表達(dá)式進(jìn) 行強(qiáng)大的模式匹配和文本檢索與...

    wqj97 評(píng)論0 收藏0
  • JS正則達(dá)式入門,看這篇就夠了

    摘要:如果遇到非常的復(fù)雜的匹配,正則表達(dá)式的優(yōu)勢(shì)就更加明顯了。關(guān)于正則表達(dá)式書寫規(guī)則,可查看,上面說的很清楚了,我就不貼出來了。替換與正則表達(dá)式匹配的子串,并返回替換后的字符串。結(jié)語正則表達(dá)式并不難,懂了其中的套路之后,一切都變得簡(jiǎn)單了。 前言 在正文開始前,先說說正則表達(dá)式是什么,為什么要用正則表達(dá)式?正則表達(dá)式在我個(gè)人看來就是一個(gè)瀏覽器可以識(shí)別的規(guī)則,有了這個(gè)規(guī)則,瀏覽器就可以幫我們判斷...

    wenzi 評(píng)論0 收藏0
  • JavaScript 中的正則達(dá)式

    摘要:正則表達(dá)式的意義中的正則表達(dá)式使用表示,可以使用構(gòu)造函數(shù)來創(chuàng)建對(duì)象,不過對(duì)象更多的是通過一種特殊的直接量語法來創(chuàng)建。用構(gòu)造函數(shù)也可以定義一個(gè)與之等價(jià)的正則表達(dá)式,代碼如下正則表達(dá)式的模式規(guī)則是由一個(gè)字符序列組成的。 正則表達(dá)式的模式匹配 正則表達(dá)式(regular expression)是一個(gè)描述字符模式的對(duì)象。javascript的RegExp對(duì)象表示正則表達(dá)式,String和Reg...

    _Dreams 評(píng)論0 收藏0
  • JavaScript中的正則達(dá)式

    Javascript的正則表達(dá)式是前端中比較重要的部分,正則表達(dá)式主要用于字符串處理,表單驗(yàn)證等場(chǎng)合,實(shí)用高效,文章主要對(duì)JavaScript中的正則的學(xué)習(xí)與總結(jié) 正則表達(dá)式的定義 正則表達(dá)式:是一個(gè)描述字符模式的對(duì)象,JavaScrip中正則表達(dá)式用RegExp對(duì)象表示,可以使用RegExp構(gòu)造函數(shù)來創(chuàng)建正則對(duì)象 正則表達(dá)式的創(chuàng)建 1.字面量創(chuàng)建 var reg = /[a-z]/; 2.構(gòu)...

    _Zhao 評(píng)論0 收藏0
  • 簡(jiǎn)單說 正則達(dá)式——要注意lastIndex屬性

    摘要:返回是一個(gè)只讀的布爾值,看這個(gè)正則表達(dá)式是否帶有修飾符。方法,它的參數(shù)是一個(gè)字符串,用對(duì)某個(gè)字符串進(jìn)行檢測(cè),如果包含正則表達(dá)式的一個(gè)匹配結(jié)果,則返回,否則返回??偨Y(jié)這次主要是說說,中正則表達(dá)式對(duì)象的個(gè)屬性,而最需要注意的就是屬性了。 說明 這篇文章,主要和大家聊聊JavaScript中RegExp對(duì)象的屬性。 解釋 每個(gè)RegExp對(duì)象都包含5個(gè)屬性,source、global、ign...

    jokester 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<