国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript中的正則表達(dá)式

_Zhao / 1582人閱讀

Javascript的正則表達(dá)式是前端中比較重要的部分,正則表達(dá)式主要用于字符串處理,表單驗(yàn)證等場合,實(shí)用高效,文章主要對JavaScript中的正則的學(xué)習(xí)與總結(jié)

正則表達(dá)式的定義

正則表達(dá)式:是一個(gè)描述字符模式的對象,JavaScrip中正則表達(dá)式用RegExp對象表示,可以使用RegExp構(gòu)造函數(shù)來創(chuàng)建正則對象

正則表達(dá)式的創(chuàng)建
1.字面量創(chuàng)建

var reg = /[a-z]/;

2.構(gòu)造函數(shù)的創(chuàng)建

var reg = new RegExp("[a-z]");
直接量字符

字符類

將直接量字符放入方括號內(nèi)就組成了字符類

console.log(/[abc]/.test("a"));//true
console.log(/[abc]/.test("b"));//true
console.log(/[abc]/.test("c"));//true
否定類字符

定義否定類字符時(shí),將一個(gè)“^”符號作為方括號內(nèi)的第一個(gè)字符

console.log(/[^abc]/.test("a"));//false
console.log(/[^abc]/.test("b"));//false
console.log(/[^abc]/.test("1111"));//true
范圍字符

利用 "-" 表示范圍字符,可以匹配某個(gè)范圍內(nèi)的字符

 console.log(/[0-9]/.test("5"));//true
 console.log(/[0-9]/.test("a"));//false
 console.log(/[a-z]/.test("b"));//true
 console.log(/[a-z]/.test("B"));//false
 console.log(/[A-Z]/.test("B"));//true
 console.log(/[A-Z]/.test("b"));//false

預(yù)定義的字符類

量詞

在我們上面認(rèn)識到的正則語法當(dāng)中,我們可以把兩位字母描述為/ww/,三位字母描述為/www/,但如果要描述很多位字母怎么辦?描述為/w....../天吶! 這是要逼死我們的節(jié)奏啊!因此量詞就是處理這些數(shù)量關(guān)系操作的它用來修飾前一位字符出現(xiàn)的次數(shù)

console.log(/d{2,4}/.test("111"));//true
console.log(/w{3}d?/.test("aaa"));//true
console.log(/w{3}d?/.test("aaa1"));//true

注意:在使用 " " 和 " ? " 時(shí) 由于這些字符有可能匹配0個(gè)字符,因此他們允許什么都不匹配,例如,正則表達(dá)式 /a/與"bbbb"匹配,因?yàn)樗?個(gè)a

貪婪量詞

我們上面列出的量詞都是貪婪量詞,

它會盡可能多地匹配,默認(rèn)先匹配整個(gè)字符串,然后不匹配在縮小范圍繼續(xù)匹配

非貪婪量詞

在上面列出的量詞后面加個(gè)問號(" ?? " " +? ")

總是從第一個(gè)字符開始向后擴(kuò)展范圍匹配

//非貪婪模式
console.log(/a*?bb/g.exec("abbaabbaaabbb")); //abb
//貪婪模式
var pattern = /a*bb/g;
var text = "aabbaabbaaabbbaabbb";
var result;
while((result = pattern.exec(text))!=null){
    console.log(result); //aabb aabb aaabb aabb
}
選擇,分組與引用

選擇

字符 " | " 用于分隔供選擇的字符

console.log(/ab|cd|ef/.test("ab"));//true
console.log(/ab|cd|ef/.test("cd"));//true
console.log(/ab|cd|ef/.test("ef"));//true

分組

"()" 用于分組,把多帶帶的項(xiàng)組合成子表達(dá)式

console.log(/java(script)?/.test("java"));//true
console.log(/java(script)?/.test("javascript"));//true

引用

引用包含 匹配模式引用,匹配的內(nèi)容引用

" "后面加數(shù)字 用于模式的引用

" $ " 后面加數(shù)據(jù) 用于匹配的內(nèi)容引用

console.log(/(d)([a-z])1/.test("1a1"));//true
console.log(RegExp.$1);//1
console.log(RegExp.$2);//a

只組合并不創(chuàng)建引用

并不是所有的分組都能創(chuàng)建引用," (?: ) "符號只用來分組而不創(chuàng)建引用,如下: 1 不是 引用的 d 而是 [a-z]

console.log(/(?:d)([a-z])1/.test("1aa"));//true
console.log(/(?:d)([a-z])1/.test("1a1"));//false
位置字符

console.log(/^java$/.test("java"));//true
console.log(/^java$/.test("javascript"));//false
console.log(/^java$/.test("cjavascript"));//false
console.log(/java(?=script)/.test("javascript"));//true
console.log(/java(?=script)/.test("javaislan"));//false
console.log(/java(?!script)/.test("javascript"));//false
console.log(/java(?!script)/.test("javaislan"));//true 
修飾符

正則表達(dá)式的修飾符是放在 "/" 之外的,JavaScript 支持三個(gè)修飾符

console.log(/JAVA/i.test("java"));//true


支持正則的String對象方法

search():
用于檢索字符串中指定的子字符串,或檢索與正則表達(dá)式相匹配的子字符串,并返回第一個(gè)與之匹配的子字符串的位置

console.log("JAVA is not javascript".search(/java/i));//0

注意:search()方法不支持全局檢索,因?yàn)樗麜雎哉齽t表達(dá)式參數(shù)中的修飾符g

replace():

用于檢索與替換操作,接收兩個(gè)參數(shù),第一個(gè)是正則表達(dá)式,第二個(gè)是要進(jìn)行替換的字符串,該方法可以全局匹配

console.log("JAVA is not JAVAscript".replace(/java/i, "java"));//java is not JAVAscript
console.log("JAVA is not JAVAscript".replace(/java/ig, "java"));//java is not javascript

回憶上面我們所提到的正則的引用 $加數(shù)字可以保存分組的匹配的內(nèi)容,這里我們就可以用到

console.log("JAVA is not javascript".replace(/(JAVA)/, ""$1""));//"JAVA" is not javascrip


match():

用于檢索字符串中與正則表達(dá)式匹配的結(jié)果,參數(shù)必須是正則表達(dá)式,返回一個(gè)由匹配結(jié)果組成的數(shù)組

在match方法中如果正則表達(dá)式設(shè)置修飾符g,則返回的數(shù)組是字符串中所有匹配的結(jié)果

console.log("JAVA is not JAVAscript".match(/java/ig));//["JAVA", "JAVA"]

如果沒有設(shè)置g,match()方法不會進(jìn)行全局檢索,只會檢索第一個(gè)匹配,但它也是返回一個(gè)數(shù)組,此時(shí)數(shù)組的第一個(gè)元素就是匹配的結(jié)果,剩下的元素為圓括號包含的子表達(dá)式匹配的結(jié)果

 console.log("1a2b".match(/(d)([a-z])/)); //["1a", "1", "a"]


split():
用于把一個(gè)字符串分割成數(shù)組,參數(shù)為字符串或這個(gè)正則表達(dá)式

console.log("a,b,c,d".split(","));//["a", "b", "c", "d"]
console.log("a, b, c, d".split(/,s*/));//["a", "b", "c", "d"]
JavaScript中的 RegExp 對象

RegExp() 構(gòu)造函數(shù)用于創(chuàng)建新的RegExp 對象。構(gòu)造函數(shù)接受兩個(gè)參數(shù),第一個(gè)是表達(dá)式的主體部分,第二個(gè)是表達(dá)式的修飾符

//在構(gòu)造函數(shù)中必須用  字符作為前綴進(jìn)行轉(zhuǎn)義
var regExp = new RegExp("w*", "g");


RegExp 對象的屬性

RegExp 對象包含5個(gè)屬性

RegExp對象的方法

exec():

用于檢索字符串中正則表達(dá)式的匹配,如果有匹配則返回該匹配的值,否則返回null

console.log(/java/i.exec("javaScript is not java"));//["java", index: 0, input: "javaScript is not java"]
console.log(/css/i.exec("javaScript is not java"));//null
console.log(/java/ig.exec("javaScript is not java"));//["java", index: 0, input: "javaScript is not java"]


上述代碼可以看出exec() 只會返回一次匹配結(jié)果,在全局匹配模式下,exec方法會設(shè)置lastIndex 屬性的值,exec()的下次檢索會從lastIndex屬性指示的字符處開始檢索

var pattern = /java/ig;
var text = "javaScript is not JAVA";
var result;
result = pattern.exec(text);
console.log(result);//["java", index: 0, input: "javaScript is not java"]
console.log(pattern.lastIndex);//4
result = pattern.exec(text);
console.log(result);//["JAVA", index: 18, input: "javaScript is not JAVA"]
console.log(pattern.lastIndex);//22

通常我們在用exec()檢索字符串時(shí),可以利用while循環(huán)

var pattern = /java/ig;
var text = "javaScript is not JAVA";
var result;
while((result = pattern.exec(text))!==null){
    console.log(result);
}
 

test():

用于檢索字符串中是否匹配某個(gè)表達(dá)式,如果匹配返回true,否則返回false

console.log(/java/.test("javascript"));//true
console.log(/java/.test("script"));//true

關(guān)注微信公眾號:六小登登。領(lǐng)取全套學(xué)習(xí)資源

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

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/89243.html

相關(guān)文章

  • JavaScript正則達(dá)式的匹配模式

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

    wqj97 評論0 收藏0
  • JavaScript 中的正則達(dá)式

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

    _Dreams 評論0 收藏0
  • JS中的正則達(dá)式

    摘要:構(gòu)造函數(shù)可以有兩個(gè)字符串參數(shù),第一個(gè)參數(shù)包含正則表達(dá)式的主體部分。只讀的布爾值,說明這個(gè)正則表達(dá)式是否帶有修飾符。中正則的擴(kuò)展構(gòu)造函數(shù)在中,只能接受字符串作為參數(shù),允許其直接接受正則表達(dá)式作為參數(shù)。 上文傳送門:初探正則表達(dá)式 正則表達(dá)式是一個(gè)描述字符模式的對象,JavaScript 的 RegExp 類表示正則表達(dá)式,String 和 RegExp 都定義了方法,后者使用正則表達(dá)式進(jìn)...

    Soarkey 評論0 收藏0
  • 正則達(dá)式

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

    bang590 評論0 收藏0
  • JavaScript 闖關(guān)記》之正則達(dá)式

    摘要:正則表達(dá)式的字符串表示,按照字面量形式而非傳入構(gòu)造函數(shù)中的字符串模式返回。其中,表示匹配項(xiàng)在字符串中的位置,而表示應(yīng)用正則表達(dá)式的字符串。下面列出了正則表達(dá)式所不支持的特性。關(guān)卡按要求完成下列常用的正則表達(dá)式。 由于本課程的核心是 JavaScript,所以本文著重講解了「正則表達(dá)式」在 JavaScript 中的用法,并未深入「正則表達(dá)式」的具體細(xì)節(jié)。如果您尚不了解「正則表達(dá)式」,強(qiáng)...

    TalkingData 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<