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

資訊專欄INFORMATION COLUMN

JavaScript_正則

pumpkin9 / 1415人閱讀

摘要:主要目的是想要中間那一塊除了之外的都可行,取的補(bǔ)集中間部分純文字,不含大于號(hào),和小于號(hào)。匹配為例匹配到的數(shù)組,第個(gè)單元,代表整個(gè)正則表達(dá)式的匹配結(jié)果則代表第個(gè)子表達(dá)式匹配的結(jié)果。

正則應(yīng)用

正則表達(dá)式在web開發(fā)中的常用

郵箱驗(yàn)證
用戶名驗(yàn)證
替換字符串某一部分
信息采集,用來分析有效代碼段
...

有規(guī)律的字符串描述

正則表達(dá)式是一門獨(dú)立的知識(shí),同樣的一段描述,比如,對于email的匹配表達(dá)式,在不同的語言是一樣的,但是調(diào)用的函數(shù)不同。

正則表達(dá)式--規(guī)則表達(dá)式

正則表達(dá)式:正則表達(dá)式
正則表達(dá)式語法:正則表達(dá)式語法
正則表達(dá)式語言:正則表達(dá)式語言

準(zhǔn)備性的工作

在js中,如何寫正則表達(dá)式。 /RegExp/

在js里,用正則表達(dá)式來驗(yàn)證字符串是否滿足, 使用 reg.test(str);

用正則表達(dá)式的exec函數(shù),用來查找匹配的選項(xiàng),并把查找的值取出。

reg.test(str); 返回true 或者false 。 常在表單驗(yàn)證中使用。


    

請輸入姓名:

請輸入年齡:

exec(); 返回 數(shù)組 或 null。
exec是英語execute的意思,CEO首席執(zhí)行官,E就是executive執(zhí)行的
“執(zhí)行” 把正則式放到字符串上執(zhí)行
每次執(zhí)行結(jié)果按序輸出,不管結(jié)果有幾個(gè),一次只輸出一個(gè) ,如果多次輸出,會(huì)保持前面的引用。當(dāng)匹配超過原字符串的時(shí)候,會(huì)返回null。然后遇到null,指針返回到匹配的字符的第一位。 具有迭代器的感覺。

var str = "ABCDEFG1234567abcdefg";
var reg = /[a-z]/g;
console.log( a=/[a-z]/g.exec(str) );
var a;
while( a=reg.exec(str) ){  //這邊 null 為 fasle。 exec() 會(huì)保持對前面一次的引用。 需要使用 值來賦值。
    console.log( a );
}

使用exec() 找最大子串

var str = "AAABBBCCCCCCC";
var reg = /(w)1+/g;
var maxLength = 0;
var maxLetter = "";
var a;
while( a=reg.exec(str) ){
    if( a[0].length>maxLength ){
        maxLength = a[0].length;
        maxLetter = a[0];
    }
}
console.log( maxLetter );

var str="BCDEFG1234567abcdefg";
var reg = /[a-z]/g;
var a;
while( (a=reg.exec(str)) != null ){  //先賦值給a,然后再與后邊判斷。
    console.log( a );
}

str.match( reg ); //查找,匹配到,返回?cái)?shù)組
str.split( reg ); //拆分,返回?cái)?shù)組
str.serch( reg ); //查找位置
str.replace( reg,"new str"); //正則替換,返回string

    
//測試是否含有hi
var reg = /hi/; //僅看字符串是否有 hi
console.log( reg.test("hello") ); //fasle
console.log( reg.test("this is iqianduan") ); //true
//測試單詞 hi
var reg01 = /hi/;
console.log( reg01.test("this is") ); //false
console.log( reg01.test("this is, hi,his") );//true
正則表達(dá)式 3 句話

要找什么字符?
從哪兒找?
找?guī)讉€(gè)?

要找什么字符

字面值, ‘hi’ ,就是找‘hi’。

用字符的集合來表示 , [abcd], 指匹配abcd中任意一個(gè)

//找不吉利的數(shù)字
//3,4,7
var reg = /[3,4,7]/; //字符集合, 不能使用 /347/ 字面值表示,是表示整體。 
console.log( reg.test("12121212") );//false
console.log( reg.test("12341234") ); //true    

用范圍表示字符 , [0-9] [0123456789] [a-z] [A-Z]

// var reg = /[0123456789]/;
var reg = /[0-9]/;
console.log( reg.test("123afsdf") ); //true
console.log( reg.test("asdf") ); //false
//是否有大寫字母
var reg = /[A-Z]/;
console.log( reg.test("asdf") );//false
console.log( reg.test("Tomorrow is another day") ); //true  

字符簇, 花團(tuán)錦簇-> 一坨字符。

系統(tǒng)為常用的字符集合,創(chuàng)建的簡寫.
例如:

[0-9] --> d

[0-9a-zA-Z_] --> w .. 域名,注冊用戶名常用的模式.

[ vf ] --> s 空白符.

//是否含有數(shù)字
var reg = /d/;
console.log( reg.test("123afsdf") ); //true
console.log( reg.test("asdf") ); //false

補(bǔ)集的形式來表示字符集合 在集合前面使用表示補(bǔ)集。

[0-9]---> [^0-9] ^ 脫字符號(hào): 念法: caret。["k?r?t] 。

[abcdef]-->[^abcdef]

//驗(yàn)證全為數(shù)字
var reg = /^[0-9]/; //匹配非數(shù)字
// var reg = /^d/ //字符簇補(bǔ)集
console.log( reg.test("aaaaa") );//非數(shù)字存在 false
console.log( reg.test("123aaa") ); //有數(shù)字存在 true

字符簇的補(bǔ)集:

d -- > D(非數(shù)字)

s --> S(非空白字符)

w --> W

任意字符 : . 唯獨(dú)不包括換行符

從哪兒找,找到哪兒

b 單詞邊界

/bhi/ --> 從單詞的邊界開始匹配hi。

// 匹配單詞hi,包括hi本身
// var reg = /hi.+/;//錯(cuò)誤
// var reg = /hiw+/;  //錯(cuò)誤。 + --> 至少有 一個(gè)
var reg = /hiw*/; 
console.log( reg.exec("this is") ); //null
console.log( reg.exec("his") ); //["his", index: 0, input: "his"]
console.log( reg.exec("history") ); //["history", index: 0, input: "history,hi"]
//匹配進(jìn)行時(shí)的結(jié)尾
var reg = /[a-zA-Z]+ing/;
console.log( reg.exec("going") );//["going", index: 0, input: "going"]
console.log( reg.exec("1ting.com") );//null
console.log( reg.exec("ing") );//null   //2 -> to  4->for  0->zero  
//匹配un前綴的反義詞
//unhappy  happy,hungry,sun,unhappy
var reg = /un[w]+/;
console.log( reg.exec("happy,hungry,sun,unhappy") ); //["unhappy", index: 17, input: "happy,hungry,sun
,unhappy"]

B 單詞的非邊界

// 把單詞中間的某一個(gè)部分取出來。
        // 把中間含有hi的單詞取出,即hi不能在兩端。
var reg = /BhiB/;
console.log( reg.exec("this") ); //["hi", index: 1, input: "this"]
console.log( reg.exec("hi") ); //null

^ creat , 從字符串的起始位置開始匹配

$ 匹配到字符串的結(jié)束位置

從字符串的開頭到結(jié)尾開始匹配,模擬運(yùn)行順序.

var reg = /^lishi$/;     
console.log( reg.exec("lishinihao") ); null
console.log( reg.exec("lishi") );  //["lisi", index: 0, input: "lisi"]
找多少

*, [0,n] --> {0, }
+ , [1,n] -->{1, }
? , [0,1] -->{0,1}
n {n} {3} a{n} , 字符a準(zhǔn)確的出現(xiàn)n次
a{n,} 字符a,至少出現(xiàn)n次。
a{n,m} 字符串a(chǎn),出現(xiàn)n到m次。

模式

以匹配為例,默認(rèn)情況下,找到一次結(jié)果符合就結(jié)束。
告知匹配過程,一直找,在全文范圍內(nèi)一直找。
g -> 全局模式, global 找所有的,而不是找一次就結(jié)束
i -> 忽略大小寫,ignore

//查找所有中間含有hi的單詞
var reg = /BhiB/gi;
var str = "shit,hi,this,thit,THIS";
console.log( str.match(reg) );  //["hi", "hi", "hi", "HI"]

確定邊界是什么,那些東西必須有,那些東西可能有可能沒有。配合+,*

//把鏈接換成 #
//  --> 
//1,不能保留鏈接的文字(反向引用)
//2,不能跨行(貪婪模式)
var reg = //g;
var str = "文字") );  

js不支持單行模式。

//s   單行模式:把整個(gè)字符串看成一行

.  代表任意,但不包括換行。


在js里,不支持當(dāng)行模式的情況下,如何換行?

什么樣的模式能代表“所有” 字符串
sS 全部字符 使用一個(gè)技巧, 一個(gè)集合加補(bǔ)集,就是全集
[dD] [sS] [wW]

var reg = //g;
var str = "";
console.log( str.replace(reg,"文字") );

//s  多行模式:碰到一行就把當(dāng)前的當(dāng)成一個(gè)字符串來解析
//把每一行的結(jié)尾的數(shù)字換成 #
//車牌號(hào)
//Cx003
//A0008
//B3456
var str = "Cx003"+
"A0008"+
"B3456";
var reg = /d+$/gm;
console.log( str.replace(reg,"#") );
貪婪模式

貪婪模式

如果"?"緊跟在在任何量詞*, + , ?,或者是{}的后面,將會(huì)使量詞變成非貪婪模式(匹配最少的次數(shù)),和默認(rèn)的貪婪模式(匹配最多的次數(shù))正好相反。
比如,使用/d+/非全局的匹配“123abc”將會(huì)返回“123”,如果使用/d+?/,那么就只會(huì)匹配到“1”。

當(dāng)正則表達(dá)式中包含能接受重復(fù)的限定符時(shí),通常的行為是(在使整個(gè)表達(dá)式能得到匹配的前提下)匹配盡可能多的字符。以這個(gè)表達(dá)式為例:a.b,它將會(huì)匹配最長的以a開始,以b結(jié)束的字符串。如果用它來搜索aabab的話,它會(huì)匹配整個(gè)字符串a(chǎn)abab。這被稱為貪婪匹配。

任何量詞后面 跟 ? 代表非貪婪模式 , 滿足條件就不找了,小富即安,打完收工。 修飾個(gè)數(shù),盡量少找和多找的。

//goooooooooods  --> goods
var str = "goooooooooods,goooods,goooood,gooooo,gooooods";
var reg = /g[o]{3,}?ds/g;
console.log( str.replace(reg,"goods") ); //goods,goods,goooood,gooooo,goods    


欲查 正向欲查

欲查不消耗字符。

//查找進(jìn)行時(shí)的單詞的詞根, 即 不要ing 。  going -> go
var str = "going,comming,fly";
// var reg = /[a-zA-Z]+ing/g;
var reg = /[w]+(?=ing)/g; // 類似探照燈,先去判斷幾位是否滿足,滿足返回,不滿足繼續(xù)下一位.
console.log( str.match(reg) );  

滿足 ing ,找到com。

不滿足接著走。 看見不滿足條件,并不會(huì)一次性調(diào)到ing后面接下去尋找,而是從該處光標(biāo)繼續(xù)尋找。
已經(jīng)查找的詞是消耗了,下次從該處光標(biāo)開始尋找。

//查找進(jìn)行時(shí)的單詞的詞根, 即 不要ing 。  going -> go
var str = "going,comming,fly";
// var reg = /[a-zA-Z]+ing/g;
// var reg = /[a-zA-Z]+(?=ing)/g; //結(jié)尾 是錯(cuò)誤的, 欲查不消耗字符, 相當(dāng)于/[a-zA-Z]+/ 這種形式
var reg = /[a-zA-Z]+(?=ing)/g; // 類似探照燈,先去判斷幾位是否滿足,滿足返回,不滿足繼續(xù)下一位.
console.log( str.match(reg) );  // ["go", "comm"]  

 
負(fù)向欲查

不是誰才行。 往后看一定位數(shù),不是誰才可以。 不要后面是某某某的東西。

//查找win98,win95,win32,win2003,winxp   -->win98,win32,win2003,winxp
var str = "win98,win95,win32,win2003,winxp";
var reg = /win(?!95)/g;
console.log( str.match(reg) ); // ["win", "win", "win", "win"]

js不支持,向前正向欲查,向前負(fù)向欲查:

//找出 un系列單詞的詞根
var reg = /[w]+(?<=un)/g;
var str = "unhappy";
console.log(str.match(reg));  //報(bào)錯(cuò)
var reg = /[w]+(?
反向引用

反向引用,也叫后向引用?;蛘叻纸M或子表達(dá)式

一般是整個(gè)表達(dá)式, 但是中間的部分 有特殊做了描述。 需要的部分特殊處理。使用分組,叫做子表達(dá)式。

//把鏈接換成空連接,保持文字信息。
    var str = "]+>([^<>]+)/;  //超鏈接的表達(dá)式
    console.log( reg.exec(str) );  //["]>([^<>]+)    主要目的是想要中間那一塊
      除了>之外的都可行 , 取> 的補(bǔ)集 [^>]
      中間部分純文字,不含大于號(hào),和小于號(hào)。 取小于號(hào)和大于號(hào)的補(bǔ)集 [^<>]+   / [sS]+
    */
    //一般是整個(gè)表達(dá)式, 但是中間的部分 有特殊做了描述。 需要的部分特殊處理。使用分組,叫做子表達(dá)式。
    //匹配html
    //   /]*)?>[sS]*/
    /*exec為例:
      匹配到的數(shù)組,第0個(gè)單元,代表"整個(gè)正則表達(dá)式的匹配結(jié)果"
      1,2,3,4....N,則代表第N個(gè)子表達(dá)式匹配的結(jié)果。  //js頂多有9個(gè)子表達(dá)式。 // ["陰天快樂", "陰天快樂", index: 0, input: "$1") ); //陰天快樂
    
    var str = "";
    var reg = /]*)?>[sS]*/;
    console.log( reg.exec(str) );
    str.replace(reg,function( $1,$2 ){
      console.dirxml($2); //html
    });
    

如何引用子表達(dá)式所匹配的結(jié)果?

在正則外邊使用:$N 來匹配 第N個(gè)子表達(dá)式的匹配結(jié)果。

在正則里邊使用N來 使用第N個(gè)子表達(dá)式。

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

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

相關(guān)文章

  • JavaScript中登錄名的正則表達(dá)式及解析(0基礎(chǔ))

    摘要:簡言在中,經(jīng)常會(huì)用到正則表達(dá)式來進(jìn)行模式匹配。要寫出正確的正則表達(dá)式,先要定義表達(dá)式規(guī)則。重復(fù)在正則表達(dá)式中用來表示元素重復(fù)出現(xiàn)的次數(shù)。給出測試結(jié)果如下毛三胖子測試代碼根據(jù)以上內(nèi)容,定義你自己的登錄名正則表達(dá)式吧原文鏈接 簡言 在JavaScript中,經(jīng)常會(huì)用到正則表達(dá)式來進(jìn)行模式匹配。例如,登錄名驗(yàn)證,密碼強(qiáng)度驗(yàn)證,字符串查找或替換等操作?,F(xiàn)在就開始吧,零基礎(chǔ)寫出你的第一個(gè)正則表達(dá)...

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

    摘要:當(dāng)我們指定標(biāo)志后,每次運(yùn)行,正則表達(dá)式本身會(huì)更新屬性,表示上次匹配到的最后索引使用全局匹配,直到結(jié)束仍沒有匹配到全局匹配類似搜索,因此不能使用,那樣只會(huì)最多匹配一次。正則表達(dá)式還可以指定標(biāo)志,表示忽略大小寫,標(biāo)志,表示執(zhí)行多行匹配。 如果有對字符串進(jìn)行匹配的需求。自然會(huì)想到用正則如 號(hào)碼:010-8123123 var reg = /^d{3}-d{7}$/ or var reg = ...

    Leck1e 評論0 收藏0
  • 【收藏】15個(gè)常用的javaScript正則表達(dá)式

    摘要:用戶名正則用戶名正則,到位字母,數(shù)字,下劃線,減號(hào)輸出密碼強(qiáng)度正則密碼強(qiáng)度正則,最少位,包括至少個(gè)大寫字母,個(gè)小寫字母,個(gè)數(shù)字,個(gè)特殊字符輸出整數(shù)正則正整數(shù)正則負(fù)整數(shù)正則整數(shù)正則輸出輸出輸出數(shù)字正則可以是整數(shù)也可以是浮點(diǎn) 1 用戶名正則 //用戶名正則,4到16位(字母,數(shù)字,下劃線,減號(hào)) var uPattern = /^[a-zA-Z0-9_-]{4,16}$/; //輸出 tr...

    MarvinZhang 評論0 收藏0
  • JavaScript正則表達(dá)式

    摘要:對象對象對象表示正則表達(dá)式,它是對字符串執(zhí)行模式匹配的強(qiáng)大工具。查找以十六進(jìn)制數(shù)規(guī)定的字符。支持正則表達(dá)式的對象的方法方法描述檢索與正則表達(dá)式相匹配的值。替換與正則表達(dá)式匹配的子串。 RegExp對象 RegExp 對象 RegExp 對象表示正則表達(dá)式,它是對字符串執(zhí)行模式匹配的強(qiáng)大工具。 直接量語法 /pattern/attributes 創(chuàng)建 RegExp 對象的語法 new R...

    894974231 評論0 收藏0
  • javascript高級(jí)特性

    摘要:人手腿嘴大手長腿歐巴櫻桃小嘴我們知道造人是一個(gè)整體不可能先造手再造腿最后造嘴,我們現(xiàn)在的需求是一旦實(shí)例化人這個(gè)對象,該有的都有了。簡單修改以上代碼大手長腿歐巴櫻桃小嘴調(diào)用函數(shù)我們在每個(gè)中添加了將原有對象返回避免無返回值的函數(shù)執(zhí)行完之后是。 高級(jí)javascript函數(shù) js中沒有class的概念,我們可以使用function來模擬。 惰性載入函數(shù) 例如我們通常使用以下的js代碼創(chuàng)建aj...

    Ryan_Li 評論0 收藏0
  • 你不知道的 javascript正則表達(dá)式

    摘要:正則表達(dá)式是用于匹配字符串中字符組合的模式。在中,正則表達(dá)式也是對象。注意如果正則表達(dá)式設(shè)置了全局匹配標(biāo)志,和的執(zhí)行會(huì)改變正則表達(dá)式屬性。顯示顯示方法執(zhí)行一個(gè)檢索,用來查看正則表達(dá)式與指定的字符串是否匹配。 正則表達(dá)式是用于匹配字符串中字符組合的模式。在 JavaScript中,正則表達(dá)式也是對象。這些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的...

    MangoGoing 評論0 收藏0

發(fā)表評論

0條評論

pumpkin9

|高級(jí)講師

TA的文章

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