精通 JS正規表示式

2021-05-25 02:52:25 字數 4069 閱讀 9938

建立正規表示式

js**

re=new regexp("a","i");//第二個引數,表示匹配時不分大小寫

js**

var re = new regexp("a","gi");//匹配所有的a或a

正規表示式還有另一種正規表示式字面量的宣告方式

js**

var re = /a/gi;  

•exec,用正規表示式模式在字串中執行查詢,並返回包

測試正規表示式是如何工作的!

js**

var str = "he";   

str = "we";   

str = "he";   

re = /he/i;   

str = "certainly!he loves her!";   

str = "he is a good boy!";   

str = "he";   

str="123abc";   

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

js**

re=/^[a-z]+/s+/d+$/i;   

arr = re.exec(osversion);   

re=//d+/;   

var arr = re.exec(osversion);   

alert(arr[0]);//8

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

js**

arr =re.exec(osversion);   

arr = re.exec(osversion);   

alert(arr[2]);//10

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

js**

var str ="some money";   

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

re = //s+/;   

var str = "a-bd-c";   

re = //d+/;   

re=//d+/g;   

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

注意,當search方法沒有找到匹配時,將返回-1

js**

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

re = /[a-z]/g;   

arr = str.match(re);   

str = "one two three four";   

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

regexp物件例項的一些屬性

js**

var re = /[a-z]/i;   

//請注意,直接alert(re)會將正規表示式連同前向斜線與標誌輸出,這是re.tostring方法定義的

每個regexp物件的例項具有lastindex屬性,它是被查詢字串中下一次成功匹配的開始位置,預設值是-1。 lastindex 屬性被 regexp 物件的 exec 和 test 方法修改.並且它是可寫的.

js**

var re = /[a-z]/;   

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

var arr = re.exec(str);   

re = /[a-z]/g;   

arr = re.exec(str);   

arr = re.exec(str);   

alert(re.lastindex);//7

當匹配失敗(後面沒有匹配),或lastindex值大於字串長度時,再執行exec等方法會將lastindex設為0(開始位置)

js**

var re = /[a-z]/;   

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

re.lastindex = 120;   

var arr = re.exec(str);   

alert(re.lastindex);//0

regexp物件的靜態屬性

js**

var re = /[a-z]/;   

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

var arr = re.exec(str);   

re.exec("tempstr");   

re = /[a-z]/g;   

str = "hi";   

re.test(str);   

re.test(str);   

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

str = "class1 class2 class3";   

re.test(str);   

re.test(str);   

re = /[a-z]/g;   

str = "123abc456";   

re.test(str);   

re.test(str);   

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

multiline屬性返回正規表示式是否使用多行模式,這個屬性不針對某個正規表示式例項,而是針對所有正規表示式,並且這個屬性可寫.(ie與opera不支援這個屬性)

js**

alert(regexp.multiline);   

var re = //w+/m;   

alert(re.multiline);   

alert(regexp.multiline);  

( [ /;

arr = re.exec(str);   

alert(arr[1]);//undefined

候選(也就是所說的「或」)

js**

str ="add";   

str ="bc";   

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

當包含分組的正規表示式進行過test,match,search這些方法之後,每個分組都被放在乙個特殊的地方以備將來使用,這些儲存是分組中的特殊值,我們稱之為反向引用

js**

var re = /(a?(b?(c?)))/;     

(c?)*/

str = "abc";   

alert(regexp.$1+"/n"+regexp.$2+"/n"+regexp.$3);   

re = //d+(/d)/d+/1/d+/;   

str = "2008-1-1";   

str = "2008-4_3";   

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

使用反向引用可以要求字串中某幾個位置上的字元必須相同.另外,在replace這類方法中可用特殊字串行來表示反向引用

js**

re = /(/d)/s(/d)/;   

str = "1234 5678";   

alert(str.replace(re,"$2 $1"));//在這個裡面$1表示第乙個分組1234,$2則表示5678

js**

re = /([a-z]+(?=/d))/i;   

str = "abc every1 abc";   

re = /([a-z](?!/d))/;i   

str = "abc1 one";   

alert(re.test(str));   

alert(regexp.$1);//one

構建乙個驗證電子郵箱位址有效性的正規表示式。電子郵箱位址有效性要求(我們姑且這樣定義):使用者名稱只能包含字母數字以及下劃線,最少一位,最多25位,使用者名稱後面緊跟@,後面是網域名稱,網域名稱名稱要求只能包含字母數字和減號(-),並且不能以減號開頭或結尾,然後後面是網域名稱字尾(可以有多個),網域名稱字尾必須是點號連上2-4位英文本母

js**

var re = /^/w(?:@(?!-))(?:(?:[a-z0-9-]*)(?:[a-z0-9](?!-))(?:/.(?!-)))+[a-z]$/;  

精通JS正規表示式

正規表示式可以 測試字串的某個模式。例如,可以對乙個輸入字串進行測試,看在該字串是否存在乙個 號碼模式或乙個信用卡號碼模式。這稱為資料有效性驗證 替換文字。可以在文件中使用乙個正規表示式來標識特定文字,然後可以全部將其刪除,或者替換為別的文字 根據模式匹配從字串中提取乙個子字串。可以用來在文字或輸入...

精通正規表示式

我只看了前面兩三章 這書的核心是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.重複單詞之間可以出現任意數量的空白字元 ...