Posted on 2008-01-23 23:32
thomas.chen 閱讀(411)
評論(0) 編輯 收藏 所屬分類:
JavaScript
1. 基礎
1.1. 簡介
正則表達式就是由普通字符(例如字符 a 到 z)以及元字符組成的文字模式。該模式描述在查找文字主體時待匹配的一個或多個字符串。正則表達式作為一個模板,將某個字符模式與所搜索的字符串進行匹配。所以她是一種可以用于模式匹配和替換的強有力的工具。
其作用如下:
u 測試字符串的是否符合某個模式。例如,可以對一個輸入字符串進行測試,看在該字符串是否存在一個電話號碼模式或一個信用卡號碼模式。這稱為數據有效性驗證。
u 替換文本。可以在文檔中使用一個正則表達式來標識特定文字,然后可以全部將其刪除,或者替換為別的文字。
1.2. 基本語法
正則表達式由兩類字符組成:元字符 (metacharacter)和字符。所謂元字符是指那些在正則表達式中具有特殊意義的專用字符,可以用來規(guī)定其前導字符(即位于元字符前面的字符)在目標對象中的出現模式。請看一個簡單的JavaScript正則表達式的例子:
/^jim{2,6}/
該表達式應該念成:匹配某字符串,該字符串由j開始,后面緊跟i,接著跟著m,其中m必須出現最少2次,最多6次。所以該表達式可以匹配:jimmm , jimmmmmm,但是不可以匹配jim。這里:
“/” …”/” :表示JavaScript正則表達定義的開始和結束。
^ :匹配輸入字符串的開始位置
{2,6} :最少匹配 n 次且最多匹配 m 次
這里^,{2,6}就是正則表達式的元字符。
1.3. JavaScript正則表達式的元字符
1.3.1. Character Classes
用來匹配字符串中特定的字符
字符
|
匹配
|
例子
|
[…]
|
匹配方括號里面的任何一個字符
|
[a-z]:表示匹配a到z的任何一個小寫字符
g[ae]y:表示可以匹配gay或者gey,但是不可以匹配gaey
|
[^…]
|
不可以匹配方括號里面的任何一個字符
|
[^a-z]:表示不可以匹配a到z的任何一個小寫字符
|
"\w
|
匹配任何一個單詞字符。等價于[a-zA-Z0-9_]
|
|
"\W
|
匹配任何一個非單詞字符。等價于[^a-zA-Z0-9_]
|
|
"\d
|
匹配任何一個單詞數字。等價于[0-9]
|
/^[1-9]\d*$/:表示匹配以1到9中任何一個數字為開始,后面跟著任意多個(0或者多個)數字的字符串。即正整數
|
"\D
|
匹配任何一個非單詞數字。等價于[^0-9]
|
|
"\s
|
匹配任何空白字符。
|
|
"\S
|
匹配任何非空白字符
|
|
|
|
|
1.3.2. Repetition Characters
用來定義其前導部分重復出現的次數
字符
|
匹配
|
例子
|
{n,m}
|
表示其前導部分連續(xù)最少出現n次,最多出現m次
注意在逗號和兩個數之間不能有空格。n,m是一個非負整數
|
o{1,3}: 將匹配 "fooooood" 中的前三個 o
|
{n}
|
表示其前導部分連續(xù)出現n次
n 是一個非負整數
|
o{2}: 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的兩個 o
|
{n,}
|
表示其前導部分連續(xù)最少出現n次
n 是一個非負整數
|
|
+
|
表示其前導部分連續(xù)最少出現1次,等價于{1,}
|
|
*
|
表示其前導部分連續(xù)最少出現0次,即出現0次,或者多次。等價于{0,}
|
|
?
|
表示其前導部分連續(xù)可以出現0次,或者1次。等價于{0,1}
|
/"w{3}"d?/ : 表示匹配3個單詞字符和一個可選數字
|
1.3.3. Anchor Characters
...待續(xù)