精通正規表示式(2)

2021-06-28 23:20:15 字數 4779 閱讀 5556

var=/a/gi   兩個/線分隔是模式,最後g表示全域性,i表示字母不區分大小
re = /\s/;// \s匹配任何空白字元,包括空格、製表符、換頁符等等  

str= "user name";//使用者名稱包含空格

alert(re.test(str));//true

str = "user name";//使用者名稱包含製表符

alert(re.test(str));//true

re = /^[a-z]+.$/i; //^表示開始 $表示字元結束位置

alert(re.test("hi111tt"));//false

alert(re.test("h.")); //true

var re = /^[a-z]+\s+\d+$/i; //+號表示字元至少要出現1次,\s表示空白字元,\d表示乙個數字

alert(re.test("abc 11222")); //true

alert(re.test("abc 11222abc")); //fals

//當時我們想取出裡面的數字

re = /\d+/

var result = re.exec(str);

alert(result); //11222

//更複雜的用法,使用子匹配

//exec返回的陣列第1到n元素中包含的是匹配中出現的任意乙個子匹配

re=/^[a-z]+\s+(\d+)$/i;//用()來建立子匹配

arr =re.exec(osversion);

alert(arr[0]);//整個osversion,也就是正規表示式的完整匹配

alert(arr[1]);//8,第乙個子匹配,事實也可以這樣取出主版本號

alert(arr.length);//2

osversion = "ubuntu 8.10";//取出主版本號和次版本號

re = /^[a-z]+\s+(\d+)\.(\d+)$/i;//.是正規表示式元字元之一,若要用它的字面意義須轉義

arr = re.exec(osversion);

alert(arr[0]);//完整的osversion

alert(arr[1]);//8

alert(arr[2]);//10

//string物件的一些和正規表示式有關的方法 

//replace方法,用於替換字串

var str ="some money";

alert(str.replace("some","much"));//much money

//replace的第乙個引數可以為正規表示式

var re = /\s/;//空白字元

alert(str.replace(re,"%"));//some%money

//在不知道字串中有多少空白字元時,正規表示式極為方便

str ="some some \tsome\t\f";

re = /\s+/;

alert(str.replace(re,"#"));//但是這樣只會將第一次出現的一堆空白字元替換掉

//因為乙個正規表示式只能進行一次匹配,\s+匹配了第乙個空格後就退出了

re = /\s+/g; //g,全域性標誌,將使正規表示式匹配整個字串

alert(str.replace(re,"@"));//some@some@some@

//另乙個與之相似的是split,以某個字元分隔

var str = "a-bd-c";

var arr = str.split("-");//返回["a","bd","c"]

str = "a_db-c";//使用者以他喜歡的方式加分隔符s

re=/[^a-z]/i;//前面我們說^表示字元開始,但在裡它表示乙個非字符集

//匹配任何不在指定範圍內的任意字元,這裡將匹配除字母處的所有字元

arr = str.split(re);//仍返回["a","bd","c"];

//在字串中查詢時我們常用indexof,與之對應用於正則查詢的方法是search,找不到返回-1

str = "my age is 18.golden age!";//年齡不是一定的,我們用indexof不能查詢它的位置

re = /\d+/;

alert(str.search(re));//返回查詢到的字串開始下標10

//注意,因為查詢本身就是出現第一次就立即返回,所以無需在search時使用g標誌

//下面的**雖然不出錯,但g標誌是多餘的

re=/\d+/g;

alert(str.search(re));//仍然是10

var str = "my name is chenfei.hello everyone!";

var re = /[a-z]/;//匹配所有大寫字母

var arr = str.match(re);//返回陣列

alert(arr);//陣列中只會包含乙個m,因為我們沒有使用全域性匹配

re = /[a-z]/g;

arr = str.match(re);

alert(arr);//m,c,j,h

//從字串中抽取單詞

re = /\b[a-z]*\b/gi;//\b表示單詞邊界 *表示0個或多個

str = "one two three four";

alert(str.match(re));//one,two,three,four

//regexp物件的靜態屬性

//input 最後用於匹配的字串(傳遞給test,exec方法的字串)

var re = /[a-z]/;

var str = "hello,world!!!";

var arr = re.exec(str);

alert(regexp.input);//hello,world!!!

re.exec("tempstr");

alert(regexp.input);//仍然是hello,world!!!,因為tempstr不匹配

//lastmatch 最後匹配的字元

re = /[a-z]/g;

str = "hi";

re.test(str);

alert(regexp.lastmatch);//h

re.test(str);

alert(regexp["$&"]);//i ,$&是lastmatch的短名字,但由於它不是合法變數名,所以要。。

//lastparen 最後匹配的分組

re = /[a-z](\d+)/gi;

str = "class1 class2 class3";

re.test(str);

alert(regexp.lastparen);//1

re.test(str);

alert(regexp["$+"]);//2

//leftcontext 返回被查詢的字串中從字串開始位置到最後匹配之前的位置之間的字元

//rigthcontext 返回被搜尋的字串中從最後乙個匹配位置開始到字串結尾之間的字元

re = /[a-z]/g;

str = "123abc456";

re.test(str);

alert(regexp.leftcontext);//123

alert(regexp.rightcontext);//bc456

re.test(str);

alert(regexp["$`"]);//123a

alert(regexp["$'"]);//c456

re = /[a-z]+/g;

str = "123abc456";

re.test(str);

alert(regexp.leftcontext);//123

alert(regexp.rightcontext);//456

//使用元字元注意事項:元字元是正規表示式的一部分,當我們要匹配正規表示式本身時,//必須對這些元字元轉義.下面是正規表示式用到的所有元字元

( [ { \ ^ $ | ) ? * + .

var str = "?";

var re = /?/;

alert(re.test(str));//出錯,因為?是元字元,必須轉義

re = /\?/;

alert(re.test(str));//true

下面是正規表示式中的預定義類

** 等同於 匹配

. ie下[^\n],其它[^\n\r] 匹配除換行符之外的任何乙個字元

\d [0-9] 匹配數字

\d [^0-9] 匹配非數字字元

\s [ \n\r\t\f\x0b] 匹配乙個空白字元

\s [^ \n\r\t\f\x0b] 匹配乙個非空白字元

\w [a-za-z0-9_] 匹配字母數字和下劃線

\w [^a-za-z0-9_] 匹配除字母數字下劃線之外的字元

精通正規表示式

我只看了前面兩三章 這書的核心是4 5 6章 精通正規表示式 這本書的第四章和第六章比較值得看 1.多選結構 mm gg 表示匹配 mm 或 gg 2.忽略大小寫 s source dest i 搜尋source,將其替換為dest,此處的i只對source起作用,而不會作用於dest。3.單詞分界...

精通正規表示式 1 正規表示式入門

1 能檢查多個檔案,挑出包含重複單詞的行,高亮標記每個重複單詞 使用標準ansi的轉義字元列 同時必須顯示這行文字來自哪個檔案。2 能跨行查詢,即使兩個單詞乙個在某行末尾而另乙個在下一行的開頭,也算重複單詞。3 能進行不區分大小寫的查詢,例如 the the.重複單詞之間可以出現任意數量的空白字元 ...

《精通正規表示式》筆記

1.多選結構 mm gg 表示匹配 mm 或 gg 2.忽略大小寫 s source dest i 搜尋source,將其替換為dest,此處的i只對source起作用,而不會作用於dest。3.單詞分界符 用來匹配單詞的開始 用來匹配單詞的結束 比如 cat 匹配以 cat 結尾的單詞,如scat...