萬盛學電腦網

 萬盛學電腦網 >> 網頁制作 >> 腳本Html教程 >> 精通 JS正則表達式

精通 JS正則表達式

正則表達式可以:
•測試字符串的某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為數據有效性驗證
•替換文本。可以在文檔中使用一個正則表達式來標識特定文字,然後可以全部將其刪除,或者替換為別的文字
•根據模式匹配從字符串中提取一個子字符串。可以用來在文本或輸入字段中查找特定文字

正則表達式語法
一個正則表達式就是由普通字符(例如字符 a 到 z)以及特殊字符(稱為元字符)組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。

創建正則表達式

  1. var re = new RegExp();//RegExp是一個對象,和Aarray一樣   
  2. //但這樣沒有任何效果,需要將正則表達式的內容作為字符串傳遞進去   
  3. re =new RegExp("a");//最簡單的正則表達式,將匹配字母a   
  4. re=new RegExp("a","i");//第二個參數,表示匹配時不分大小寫 

	var re = new RegExp();//RegExp是一個對象,和Aarray一樣
	//但這樣沒有任何效果,需要將正則表達式的內容作為字符串傳遞進去
	re =new RegExp("a");//最簡單的正則表達式,將匹配字母a
	re=new RegExp("a","i");//第二個參數,表示匹配時不分大小寫


RegExp構造函數第一個參數為正則表達式的文本內容,而第一個參數則為可選項標志.標志可以組合使用



•g (全文查找)


•i (忽略大小寫)


•m (多行查找)



Js代碼 復制代碼 收藏代碼
  1. var re = new RegExp("a","gi");//匹配所有的a或A  
var re = new RegExp("a","gi");//匹配所有的a或A

正則表達式還有另一種正則表達式字面量的聲明方式


Js代碼 復制代碼 收藏代碼
  1. var re = /a/gi;  
var re = /a/gi;


和正則表達式相關的方法和屬性




正則表達式對象的方法



•test,返回一個 Boolean 值,它指出在被查找的字符串中是否存在模式。如果存在則返回 true,否則就返回 false。


•exec, 用正則表達式模式在字符串中運行查找,並返回包<script type="text/javascript" src="http://www.javaeye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.javaeye.com/javascripts/tinymce/plugins/javaeye/langs /zh.js"></script>含該查找結果的一個數組。


•compile,把正則表達式編譯為內部格式,從而執行得更快。


正則表達式對象的屬性



•source,返回正則表達式模式的文本的復本。只讀。


•lastIndex,返回字符位置,它是被查找字符串中下一次成功匹配的開始位置。


•$1...$9,返回九個在模式匹配期間找到的、最近保存的部分。只讀。


•input ($_),返回執行規范表述查找的字符串。只讀。


•lastMatch ($&),返回任何正則表達式搜索過程中的最後匹配的字符。只讀。


•lastParen ($+),如果有的話,返回任何正則表達式查找過程中最後括的子匹配。只讀。


•leftContext ($`),返回被查找的字符串中從字符串開始位置到最後匹配之前的位置之間的字符。只讀。


•rightContext ($'),返回被搜索的字符串中從最後一個匹配位置開始到字符串結尾之間的字符。只讀。


String對象一些和正則表達式相關的方法



•match,找到一個或多個正則表達式的匹配。


•replace,替換與正則表達式匹配的子串。


•search,檢索與正則表達式相匹配的值。


•split,把字符串分割為字符串數組。




測試正則表達式是如何工作的!


Js代碼 復制代碼 收藏代碼
  1. //test方法,測試字符串,符合模式時返回true,否則返回false   
  2. var re = /he/;//最簡單的正則表達式,將匹配he這個單詞   
  3. var str = "he";   
  4. alert(re.test(str));//true   
  5. str = "we";   
  6. alert(re.test(str));//false   
  7. str = "HE";   
  8. alert(re.test(str));//false,大寫,如果要大小寫都匹配可以指定i標志(i是ignoreCase或case-insensitive的表示)   
  9. re = /he/i;   
  10. alert(re.test(str));//true   
  11. str = "Certainly!He loves her!";   
  12. alert(re.test(str));//true,只要包含he(HE)就符合,如果要只是he或HE,不能有其它字符,則可使用^和$   
  13. re = /^he/i;//脫字符(^)代表字符開始位置   
  14. alert(re.test(str));//false,因為he不在str最開始   
  15. str = "He is a good boy!";   
  16. alert(re.test(str));//true,He是字符開始位置,還需要使用$   
  17. re = /^he$/i;//$表示字符結束位置   
  18. alert(re.test(str));//false   
  19. str = "He";   
  20. alert(re.test(str));//true   
  21. //當然,這樣不能發現正則表達式有多強大,因為我們完全可以在上面的例子中使用==或indexOf   
  22. re = /s/;// s匹配任何空白字符,包括空格、制表符、換頁符等等   
  23. str= "user Name";//用戶名包含空格   
  24. alert(re.test(str));//true   
  25. str = "user     Name";//用戶名包含制表符   
  26. alert(re.test(str));//true   
  27. re=/^[a-z]/i;//[]匹配指定范圍內的任意字符,這裡將匹配英文字母,不區分大小寫   
  28. str="variableName";//變量名必須以字母開頭   
  29. alert(re.test(str));//true   
  30. str="123abc";   
  31. alert(re.test(str));//false  
	//test方法,測試字符串,符合模式時返回true,否則返回false
	var re = /he/;//最簡單的正則表達式,將匹配he這個單詞
	var str = "he";
	alert(re.test(str));//true
	str = "we";
	alert(re.test(str));//false
	str = "HE";
	alert(re.test(str));//false,大寫,如果要大小寫都匹配可以指定i標志(i是ignoreCase或case-insensitive的表示)
	re = /he/i;
	alert(re.test(str));//true
	str = "Certainly!He loves her!";
	alert(re.test(str));//true,只要包含he(HE)就符合,如果要只是he或HE,不能有其它字符,則可使用^和$
	re = /^he/i;//脫字符(^)代表字符開始位置
	alert(re.test(str));//false,因為he不在str最開始
	str = "He is a good boy!";
	alert(re.test(str));//true,He是字符開始位置,還需要使用$
	re = /^he$/i;//$表示字符結束位
						
copyright © 萬盛學電腦網 all rights reserved