正則表達式: 我們已經接觸過與正則表達式有關的一些概念。例如在Windows操作系統中,用“?”和“*”通配符來查找硬碟上的文件時,“?”通配符匹配文件名中的單個字元,而“*”通配符匹配零個或多個字元。如“data?.dat”就是一種文本模式,它能匹配“data1.dat”、“datan.dat”和 ...
- 正則表達式:
我們已經接觸過與正則表達式有關的一些概念。例如在Windows操作系統中,用“?”和“*”通配符來查找硬碟上的文件時,“?”通配符匹配文件名中的單個字元,而“*”通配符匹配零個或多個字元。如“data?.dat”就是一種文本模式,它能匹配“data1.dat”、“datan.dat”和“dataw.dat”。“data*.da”是另外一種文本模式,它匹配“data.dat”、“data1.dat”、“datawnc.dat”和“datadiff.dat”等文件名。
正則表達式的功能和概念類似於“*”和“?”通配符所實現的功能和概念,但它的功能更強大,而且更加靈活。下麵是我在培訓時根據筆記所整理出來的一些簡單的正則表達式的使用方法!
- 創建RegExp對象實例的兩種方式:
(1)構造函數方式
var reg=new RegExp(“表達式”,“附加參數”);
(2)普通方式
var reg=/表達式/附加參數
附加參數是可選的,用來擴展正則表達式的含義,主要有三個參數:
(1)g:全局匹配。 (2)i:用作忽略大小寫的參數。 (3)m:多行匹配。
- test方法
該方法檢查一個字元串中是否存在創建RegExp對象實例時所指定的正則表達式模式,如果存在則返回true,否則返回false。
檢查字元串中是否存在“world”。
<script type="text/javascript">
var str="hello world";
var regExp=new RegExp("world");
var result=regExp.test(str);
document.write(result); //true
</script>
調用RegExp()的構造函數創建正則表達式對象regExp。調用正則表達式對象的test()方法檢查目標字元串str中是否包含模式world。如果在str中查找到模式world,在頁面上輸出test()的返回值true,否則輸出返回值false。
檢查字元串中是否存在“world”,並忽略大小寫。
<script type="text/javascript">
var str="HELLO WORLD";
var regExp=/world/i;
var result=regExp.test(str);
document.write(result); //true
</script>
將正則表達式/world/i賦給變數regExp,這是用普通方式創建正則表達式對象,附加參數i表示忽略world的大小寫,所以在用正則表達式對象的test方法檢查“HELLO WORLD”中是否存在“world”模式時,返回值是true。
- exec方法
exec方法使用RegExp對象實例創建時指定的正則表達式模式搜索字元串,並返回一個包含搜索結果的數組。
在“我愛祖國我愛家鄉”中搜索“我”,並輸出“我”在被搜索的字元串中的位置。
<script type="text/javascript">
var str="我愛祖國我愛家鄉";
var regExp=/我/;
var result=regExp.exec(str);
document.write("在索引"+result.index+"位置出現了"+result);
</script>
exec方法返回的數組有index屬性,它表示匹配的字元串在整個被搜索字元串中的位置;exec方法每次從字元串的起始位置搜索第一個與模式匹配的字元串。
- 限定符
(1){n}:規定前面的元素或組合項要連續出現n次。
<script type="text/javascript">
var regExp=/he{2}/;
var str="heeel";
var flag= regExp.test(str) document.write(flag);
</script>
執行代碼後,在頁面上輸出true,因為在字元串“heeel”中,存在he{2}文本模式。如果要讓正則表達式“he{2}”中的“he”同時受到{2}的作用,必須使用圓括弧將它們括起來,使它們成為一個緊密結合的組合項,這樣{2}就表示圓括弧中的內容連續出現2次。
(2){n,}:規定前面的元素或組合項至少出現n次。例如“o{2,}”,字元串“bod”不能與之匹配,但“foood”可以與之匹配。
(3){n,m}:規定前面的元素或組合項至少連續出現n次,至多連續出現m次,其中n≤m,逗號和數字之間不能有空格。例如“o{1,3}”,字元串“food”和字元串“foood”都能與之匹配。
(4)+:規定前面的元素或組合項必須出現一次或連續出現多次,等效於{1,}。
(5)*:規定前面的元素或組合項可以出現零次或連續多次,等效於{0,}。例如“zo*”,字元串“z”和“zoo”都能與之匹配。
(6)?:規定前面的元素或組合項出現零次或一次,等效於{0,1}。例如“zo?”,字元串“z”和“zo”都能與之匹配。
- 選擇匹配符
選擇匹配符有且僅有一個,即“|”字元,用於選擇匹配兩個選項之中的任意一個。例如“chapter|section1”匹配的是“chapter”或“section1”,如果要匹配“chapter1”或“section1”,使用括弧,即“(chapter|section)1”。
- 字元匹配符
(1)[…]:匹配方括弧中包含的字元集中的任意一個字元。例如,正則表達式“[abc]”,字元“a”、“b”、“c”都可以與之匹配。
(2)[^…]:匹配方括弧中未包含的任何字元。例如,正則表達式“[^ab]”,除了字元“a”、“b”之外,其他的任何字元都可以與之匹配。
(3)[a-z],[1-9]:匹配指定範圍內的任何字元。 (4)[^a-z],[^1-9]:匹配不在指定的範圍內的任何字元。
(5)\d:匹配任意一個數字字元,等效於[0-9]。 (6)\D:匹配任意一個非數字字元,等效於[^0-9]。
(7)\s:匹配任何空白字元,包括空格、製表符等。
(8)\S:匹配任何非空白字元。
(9)\w:匹配任何英文字母、數字和下劃線,等效於[A-Za-z0-9_]。 (10)\W:匹配任何非英文字母和數字類字元,但不包括下劃線,等效於[^A-Za-z0-9_]。 (11).:匹配除換行符\n之外的任何單字元。
- 常用的正則表達式
1.匹配身份證號碼:^\d{15}$|^\d{18}$
2.郵箱:^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$;
3.中國的郵政編碼:^\d{6}$
4.匹配字元串中的中文字元:[\u4e00-\u9fa5]
5.驗證5到12位的qq號:^\d{5,12}$