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

資訊專欄INFORMATION COLUMN

——————【 正則表達式 】——————

fuchenxuan / 1723人閱讀

摘要:正則表達式邊界及前瞻邊界整個字符串開頭結(jié)尾單詞的邊界前瞻正向前瞻反向前瞻正則的對象屬性屬性描述對象是否具有標(biāo)志。正則表達式的源文本。支持正則表達式的對象的方法方法描述檢索與正則表達式相匹配的值。替換與正則表達式匹配的子串。

——————【 正則表達式 】——————

復(fù)習(xí)字符串操作

indexOf 查找字符 返回位置
charAt  查找位置 返回字符
substring 獲取字符竄
split     分割字符串

正則表達式的概念和寫法

正則 :也叫做規(guī)則,讓計算機能夠讀懂人類的規(guī)則
正則都是操作字符串的。
正則的寫法:
var re = /a/; //和數(shù)組字符串區(qū)分開來
var re = newRegExp("a");
【正則默認(rèn)】 :
1.正則中是區(qū)分大小寫的
不區(qū)分大小寫在正則后加 表示i (ignore)
如var re = newRegExp("a","i");
2.正則匹配成功就會結(jié)束,不會繼續(xù)匹配,
如果想全部查找就要加 標(biāo)識g (global)

量詞:代表出現(xiàn)的次數(shù)

量詞        描述
n+            匹配任何包含至少一個 n 的字符串。
n*            匹配任何包含零個或多個 n 的字符串。
n?            匹配任何包含零個或一個 n 的字符串。
n{X}        匹配包含 X 個 n 的序列的字符串。
n{X,Y}          匹配包含 X 至 Y 個 n 的序列的字符串。
n{X,}            匹配包含至少 X 個 n 的序列的字符串。
n$            匹配任何結(jié)尾為 n 的字符串。
^n            匹配任何開頭為 n 的字符串。
?=n            匹配任何其后緊接指定字符串 n 的字符串。
?!n            匹配任何其后沒有緊接指定字符串 n 的字符串。
>{n,m}:至少出現(xiàn)n次,最多m次
>{n,} :至少n次
>* :任意次 相當(dāng)于{0,}
? :零次或一次 相當(dāng)于{0,1}
+ :一次或任意次相當(dāng)于 {1,}
{n}: 正好n次
例子:判斷是不是QQ號
//^ : 放在正則的最開始位置,就代表起始的意思,注意 /[^a] / 和

/^[a]/是不一樣的,前者是排除的意思,后者是代表首位。

//$ : 正則的最后位置 , 就代表結(jié)束的意思

//首先想QQ號的規(guī)則 
1 首位不能是0
2 必須是 5-12位的數(shù)字
var aInput = document.getElementsByTagName("input");

var re = /^[1-9]d{4,11}$/;

//123456abc為了防止出現(xiàn)這樣的情況,所以必須限制最后

//首位是0-9,接著是4-11位的數(shù)字類型。

aInput[1].onclick = function(){

    if( re.test(aInput[0].value) ){

        alert("是QQ號");
    
    }else{
    
        alert("不是QQ號");

    }
};

例子:去掉前后空格(面試題經(jīng)常出現(xiàn))

var str = " hello ";

    alert( "("+trim(str)+")" );//為了看出區(qū)別所以加的括號。 (hello)
    
function trim(str){

var re = /^s+|s+$/g; // |代表或者 s代表空格 +至少一個 前面有至少一個空格 或者后面有至少一個空格 且全局匹配

return str.replace(re,""); //把空格替換成空

}

貪婪模式與反貪婪模式

*、+和?限定符都是貪婪的,因為它們會盡可能多的匹配文字,只有在它們的后面加上一個?就可>以實現(xiàn)非貪婪或最小匹配。
var c="qqq icbkb coiwcnk tyu kjanc alnc"

var reg =/w{4,7}/g

    console.log(c.match(reg))// ["icbkb", "coiwcnk", "kjanc", "alnc"]

var reg =/w{4,7}?/g

    console.log(c.match(reg)) ["icbk", "coiw", "kjan", "alnc"]
    

正則表達式邊界及前瞻

邊界

整個字符串開頭( ^ ) 結(jié)尾( $ )

單詞的邊界 (b), (B)

前瞻

正向前瞻 reg (? = assert)

反向前瞻 reg (?! = assert)

正則的對象屬性

屬性 描述

global RegExp 對象是否具有標(biāo)志 g。 ignoreCase RegExp 對象是否具有標(biāo)志 i。 lastIndex 一個整數(shù),標(biāo)示開始下一次匹配的字符位置。 multiline RegExp 對象是否具有標(biāo)志 m。 source 正則表達式的源文本。

正則表達式的使用

RegExp 對象方法

方法 描述
compile    編譯正則表達式。
exec        檢索字符串中指定的值。返回找到的值,并確定其位置。
test        檢索字符串中指定的值。返回 true 或 false。

支持正則表達式的 String 對象的方法

方法 描述
search        檢索與正則表達式相匹配的值。
match        找到一個或多個正則表達式的匹配。
replace        替換與正則表達式匹配的子串。
split        把字符串分割為字符串?dāng)?shù)組。

test() :在字符串中查找符合正則的內(nèi)容,若查找到返回true,反之返回false.

用法正則.test(字符串)
例子:判斷是否是數(shù)字
var str = "374829348791";
    
var re = /D/; // D代表非數(shù)字
    
    if( re.test(str) ){ // 返回true,代表在字符串中找到了非數(shù)字。

        alert("不全是數(shù)字");
    
        }else{
    
        alert("全是數(shù)字");
    }

search() :在字符串搜索符合正則的內(nèi)容,搜索到就返回出現(xiàn)的位置(從0開始,如果匹配的不只是一個字母,那只會返回第一個字母的位置), 如果搜索失敗就返回 -1

用法:字符串.search(正則)
在字符串中查找復(fù)合正則的內(nèi)容。忽略大小寫:i——ignore(正則中默認(rèn)是區(qū)分大小寫的 如果不區(qū)分大小寫的話,在正則的最后加標(biāo)識 i )

例子:在字符串中找字母b,且不區(qū)分大小寫

var str = "abcdef";
var re = /B/i;
//var re = new RegExp("B","i"); 也可以這樣寫
alert( str.search(re) ); // 1

match() 在字符串中搜索復(fù)合規(guī)則的內(nèi)容,搜索成功就返回內(nèi)容,格式為數(shù)組,失敗就返回null。

用法: 字符串.match(正則)
量詞:+ 至少出現(xiàn)一次 匹配不確定的次數(shù)(匹配就是搜索查找的意思)
全局匹配:g——global(正則中默認(rèn),只要搜索到復(fù)合規(guī)則的內(nèi)容就會結(jié)束搜索 )

例子:找出指定格式的所有數(shù)字,如下找到 123,54,33,879

var str = "haj123sdk54hask33dkhalsd879";

var re = /d+/g; // 每次匹配至少一個數(shù)字 且全局匹配

如果不是全局匹配,當(dāng)找到數(shù)字123,它就會停止了。

就只會彈出123.加上全局匹配,就會從開始到結(jié)束一直去搜索符合規(guī)則的。

如果沒有加號,匹配的結(jié)果就是1,2,3,5,4,3,3,879并不是我們想要的,有了加號,每次匹配的數(shù)字就是至少一個了。

alert( str.match(re) ); // [123,54,33,879]

replace() :查找符合正則的字符串,就替換成對應(yīng)的字符串。返回替換后的內(nèi)容。

用法: 字符串.replace(正則,新的字符串/回調(diào)函數(shù))(在回調(diào)函數(shù)中,第一個參數(shù)指的是每次匹配成功的字符) | : 或的意思 。

例子:敏感詞過濾,比如 >我愛北京天安門,天安門上太陽升。------我愛*,上太陽升。即北京和天安門變成*號,
一開始我們可能會想到這樣的方法:

var str = "我愛北京天安門,天安門上太陽升。";

var re = /北京|天安門/g;     // 找到北京 或者天安門 全局匹配

var str2 = str.replace(re,"*"); 

alert(str2)                 //我愛**,*上太陽升 

//這種只是把找到的變成了一個*,并不能幾個字就對應(yīng)幾個*。

要想實現(xiàn)幾個字對應(yīng)幾個*,我們可以用回調(diào)函數(shù)實現(xiàn):

var str = "我愛北京天安門,天安門上太陽升。";

var re = /北京|天安門/g;        // 找到北京 或者天安門 全局匹配

var str2 = str.replace(re,function(str){

alert(str);         //用來測試:函數(shù)的第一個參數(shù)代表每次搜索到的符合正則的字符,所以第一次str指的是北京 第二次str是天安門 第三次str是天安門

var result = "";

for(var i=0;i

():,小括號,叫做分組符。就相當(dāng)于數(shù)學(xué)里面的括號。如下:

var str = "2013-6-7";

var re1 = /d-+/g;           // 全局匹配數(shù)字,橫杠,橫杠數(shù)量至少為1,匹配結(jié)果為: 3- 6-

var re1 = /(d-)+/g;        // 全局匹配數(shù)字,橫杠,數(shù)字和橫杠整體數(shù)量至少為1 3-6-

var re2 = /(d+)(-)/g;      // 全局匹配至少一個數(shù)字,匹配一個橫杠 匹配結(jié)果:2013- 6-

[] : 表示某個集合中的任意一個,比如 [abc] 整體代表一個字符 匹配 a b c 中的任意一個,也可以是范圍,[0-9] 范圍必須從小到大 。

1 整體代表一個字符 :^寫在[]里面的話,就代表排除的意思

例子:匹配HTML標(biāo)簽 比如

hahahah
找出標(biāo)簽

var re = /<2+>/g; //匹配左括號

中間至少一個非右括號的內(nèi)容(因為標(biāo)簽里面還有屬性等一些東西),然后匹配右括號

var re = /<[wW]+>/g; //匹配左括號 中間至少一個字符或者非字符的內(nèi)容,然后匹配右括號//

其實就是找到左括號,然后中間可以有至少一個內(nèi)容,一直到找到右括號就代表是一個標(biāo)簽。

概念理解

正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這>>些特定字符>的組合,組成一個“規(guī)則字符串”,這個“規(guī)則字符串”用來表達對字符串的一>>種過濾邏輯。
給定一個正則表達式和另一個字符串,我們可以達到如下的目的:

給定的字符串是否符合正則表達式的過濾邏輯(稱作“匹配”);

可以通過正則表達式,從字符串中獲取我們想要的特定部分。

正則表達式的特點是:

靈活性、邏輯性和功能性非常強;

可以迅速地用極簡單的方式達到字符串的復(fù)雜控制。

a ?

> ?

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

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

相關(guān)文章

  • 正則達式

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

    bang590 評論0 收藏0
  • JS中的正則達式

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

    Soarkey 評論0 收藏0
  • JavaScript正則達式總結(jié)

    摘要:正則表達式一直是里比較難以掌握的點。在中創(chuàng)建正則的兩種方式使用字面量這就是正則表達式的字面量語法,表示正則表達式的模式,為正則表達式的標(biāo)志。字面量形式的正則表達式一般使用較多,也推薦大家盡可能使用這種形式,簡潔易讀,符合正常的使用習(xí)慣。 正則表達式一直是js里比較難以掌握的點。 看不懂,學(xué)不會,記不住。 每次需要用到正則的時候,都需要再去查找資料。 今天花時間把正則的知識點總結(jié)下,希望...

    big_cat 評論0 收藏0
  • 正則與JS中的正則

    摘要:注意本文將正則與中的正則分開討論。正則零寬斷言更多參考各種語言對于正則不同支持參考單行模式與多行模式通過設(shè)置正則表達式后的修飾符可開啟對應(yīng)的匹配模式單行模式和多行模式。 最近這段時間幫同學(xué)處理一些文檔, 涉及到一些結(jié)構(gòu)化文檔的工作大部分都得使用正則表達式, 之前對于正則的認(rèn)識大多來源于語言書上那幾頁的介紹, 自己也沒有用過幾次。這里將我之前感到模糊的概念作個整理。因為對JS了解多點,所...

    firim 評論0 收藏0
  • JavaScript正則達式的匹配模式

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

    wqj97 評論0 收藏0
  • 正則達式

    摘要:最全正則表達式總結(jié)驗證號手機號中文郵編身份證地址等是正則表達式的縮寫,作用是對字符串執(zhí)行模式匹配。學(xué)習(xí)目標(biāo)了解正則表達式語法在中使用正則表達式在中使 JS高級技巧 本篇是看的《JS高級程序設(shè)計》第23章《高級技巧》做的讀書分享。本篇按照書里的思路根據(jù)自己的理解和經(jīng)驗,進行擴展延伸,同時指出書里的一些問題。將會討論安全的類型檢測、惰性載入函數(shù)、凍結(jié)對象、定時器等話題。1. 安全的類型檢測...

    yibinnn 評論0 收藏0

發(fā)表評論

0條評論

fuchenxuan

|高級講師

TA的文章

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