正規表示式一

2021-07-03 13:45:20 字數 3250 閱讀 5341

工欲善其事,必先利其器,jq原始碼中充斥的大量的正規表示式,我準備根據李炎恢老師的正規表示式的講解,

寫一篇有關正規表示式的筆記!不墨跡,直接進入正題!

ecmascript 的 regexp 類 表示正規表示式

正規表示式在jq中被大量運用,主要是為了檢索字串,進行匹配

建立正規表示式

var box=new

regexp('box');

//當然後面還可以傳入乙個引數,是用來確定修飾正則驗證時的規則

//字面量方式的正則,最為常用

var box=/box/

//如果傳參的話

var box=/box/igm

i 忽略大小寫

g 全域性匹配,否則匹配到第乙個停止

m 多行匹配,字串有很多行,不加m只匹配第一行

如何匹配呢,regexp 物件包含兩個方法:test()和 exec()。**test() 方法在字串中查詢是否存在指定的正規表示式並返回布林值,如果存在則返回 true,不存在則返回 false。exec()方法也用於在字串中查詢指定正規表示式,如果 exec()方法執行成功,則返回包含該查詢字串的相關資訊陣列。如果執行失敗,則返回 null。

//test方法

var pattern=/box/i;

var str="this is a box"

alert(pattern.test(str));//false

alert(/box/i.test('this is a box!')); //一條語句判斷
//exec方法,還有其他應用,下面再說

var pattern= /box/i;

var str ='thisis abox!';

alert(pattern.exec(str));//返回乙個box,但這個不是乙個字串,有就返回陣列的值,沒有就null

alert(typeof pattern.exec(str))//object是乙個物件,陣列也是物件,

下面說一下正則中,字串正則的表達方法,因為string正規表示式的方法

分別是match,replace,search,sp四種方法,下面一一舉例

search

var pattern=/box/ig;//否則第乙個box就停止了

var str ='this is a box!,that is a box too';

alert(str.search(pattern));//將所有組成陣列返回//box,box

search

var pattern=/box/i;

var str ='this is a box!,that is a box too';

alert(str.search(pattern));//10,第乙個位置為0,不會匹配到第二個,第乙個就停止

replace

var pattern=/box/ig;//開啟全域性可以替換全部的box

var str ='this is a box!,that is a box too';

alert(str.replace(pattern,'tom'));//返回替換後的字串this is a tom!,that is a tom too

var pattern=/!/ig;//用!分割

var str ='this is a box!,that is a box too';

alert(str.split(pattern));//this is a box,that is a box too, 還有乙個空的

regexp物件的靜態屬性 其中實際很少使用,在書中也沒找到一些有關靜態的用法

var pattern= /(g)oogle/; 

var str ='thisis google!';

pattern.test(str);//必須要執行,否則後面的屬性就沒有

//input顯示當前匹配的字串 可以用$_代替

alert(regexp.input); //this is google

regexp['$_']//這是改寫

//最後一次匹配的字串 $`

alert(regexp.leftcontext); //this is

regexp['$`']

//在上一次匹配後的字串 $'

alert(regexp.rightcontext); //!

regexp['$']

//最後乙個匹配的字串 ,$&

alert(regexp.lastmatch);//google

//最後一對圓括號內的匹配字串 $+

alert(regexp.lastparen); //g

//用於指定是否所有的表示式都用於多行的布林值 $*

alert(regexp.multiline); ///false

//要注意的是:opera 不支援 input、lastmatch、lastparen 和 multiline 屬性。ie不支援 multiline 屬性。

當然還有例項屬性,用的也很少,都是一些檢驗某些屬性是否存在的

var pattern= /google/ig;

alert(pattern.global); //true,是否全域性了

alert(pattern.ignorecase); //true,是否忽略大小寫

alert(pattern.multiline); //false,是否支援換行

alert(pattern.source); //google,正規表示式的源字串

var pattern= /google/g; varstr ='googlegoogle google'; pattern.test(str); //google,匹配第一次 alert(pattern.lastindex); //6,第二次匹配的位

ps:以上基本沒什麼用。並且 lastindex 在獲取下次匹配位置上 ie 和其他瀏覽器有偏差, 主要表現在非全域性匹配上。lastindex 還支援手動設定,直接賦值操作。

正規表示式 正規表示式 總結

非負整數 d 正整數 0 9 1 9 0 9 非正整數 d 0 負整數 0 9 1 9 0 9 整數 d 非負浮點數 d d 正浮點數 0 9 0 9 1 9 0 9 0 9 1 9 0 9 0 9 0 9 1 9 0 9 非正浮點數 d d 0 0 負浮點數 正浮點數正則式 英文本串 a za z...

正規表示式 一

若你使用過windows dos下用於檔案查詢的萬用字元,也就是 和?如果你想查詢某個目錄下的所有的word文件的話,你會搜尋 doc。會被解釋成任意的字串。和萬用字元類似,正規表示式也是用來進行文字匹配的工具,只不過比萬用字元更能精確地描述你的需求。比如你可以編寫乙個正規表示式來查詢所有以0開頭,...

正規表示式(一)

定義和使用 var patt1 new regexp hello var patt2 world test方法 test 方法檢索字串中的指定值。返回值是 true 或 false。var pat my var str this is my code.console.log pat.test str...