Regex文法
| 轉義符 |
說明 |
一般字元 |
除 .$ ^ { [ ( | ) * + ? / 外,其他字元與自身匹配。 |
| 字元 |
含意 |
| / |
做為轉意,即通常在"/"後面的字元不按原來意義解釋,如/b/匹配字元"b",當b前面加了反斜杆後//b/,轉意為匹配一個單詞的邊界。 -或- 對Regex功能字元的還原,如"*"匹配它前面元字元0次或多次,/a*/將匹配a,aa,aaa,加了"/"後,/a/*/將只匹配"a*"。 |
| ^ |
匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a" |
| $ |
匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A" |
| * |
匹配前面元字元0次或多次(任意多次),/a*/ 將匹配零或多個 a,/ba*/將匹配b,ba,baa,baaa |
| + |
匹配前面元字元1次或多次,/a+/ 將匹配一或多個 a ,/ba*/將匹配ba,baa,baaa |
| ? |
匹配前面元字元0次或1次,/ba*/將匹配b,ba |
| (x) |
匹配x儲存x在名為$1...$9的變數中 |
| x|y |
匹配x或y |
| {n} |
精確匹配n次 |
| {n,} |
匹配n次以上 |
| {n,m} |
匹配n-m次 |
| [xyz] |
字元集(character set),匹配這個集合中的任一一個字元(或元字元) |
| [^xyz] |
不匹配這個集合中的任何一個字元 |
| [/b] |
匹配一個退格符 |
| /b |
匹配一個單詞的邊界 |
| /B |
匹配一個單詞的非邊界 |
| /cX |
這兒,X是一個控制符,//cM/匹配Ctrl-M |
| /d |
匹配一個數字字元,等價於 [0-9] |
| /D |
匹配一個非數字字元,等價於 [^0-9] |
| /n |
匹配一個分行符號 |
| /r |
匹配一個斷行符號符 |
| /s |
匹配一個空白字元,包括/n,/r,/f,/t,/v等 |
| /S |
匹配一個非空白字元,等價於 [^/n/f/r/t/v] |
| /t |
匹配一個定位字元 |
| /v |
匹配一個重直定位字元 |
| /w |
數字、字母、底線,等價於[a-zA-Z0-9_] |
| /W |
非 /w ,等價於[^a-zA-Z0-9_] |
例子:
E-mail地址驗證:
function test_email(strEmail)
{
var myReg = /^[_a-z0-9]+@([_a-z0-9]+/.)+[a-z0-9]{2,3}$/;
if(myReg.test(strEmail)) return true;
return false;
}
HTML代碼的屏蔽
function mask_HTMLCode(strInput)
{
var myReg = /<(/w+)>/;
return strInput.replace(myReg, "<$1>");
}
C#
bool IsValidEmail(string strIn){ // Return true if strIn is in valid e-mail format. return Regex.IsMatch(strIn, @"^([/w-/.]+)@((/[[0-9]{1,3}/.[0-9]{1,3}/.[0-9]{1,3}/.)|
(([/w-]+/.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(/]?)$ " ) ;
}
Regex對象的屬性及方法
預定義的Regex擁有有以下靜態屬性:input, multiline, lastMatch, lastParen, leftContext, rightContext和$1到$9。其中input和multiline可以預設定。其他屬性的值在執行過exec或test方法後被根據不同條件賦以不同的值。許多屬性同時擁有長和短(perl風格)的兩個名字,並且,這兩個名字指向同一個值。(JavaScript類比perl的Regex) Regex對象的屬性
| 屬性 |
含義 |
| $1...$9 |
如果它(們)存在,是匹配到的子串 |
| $_ |
參見input |
| $* |
參見multiline |
| $& |
參見lastMatch |
| $+ |
參見lastParen |
| $` |
參見leftContext |
| $’ |
參見rightContext |
| constructor |
建立一個對象的一個特殊的函數原型 |
| global |
是否在整個串中匹配(bool型) |
| ignoreCase |
匹配時是否忽略大小寫(bool型) |
| input |
被匹配的串 |
| lastIndex |
最後一次匹配的索引 |
| lastParen |
最後一個括弧括起來的子串 |
| leftContext |
最近一次匹配以左的子串 |
| multiline |
是否進行多行匹配(bool型) |
| prototype |
允許附加屬性給對象 |
| rightContext |
最近一次匹配以右的子串 |
| source |
Regex模式 |
| lastIndex |
最後一次匹配的索引 |
Regex對象的方法
| 方法 |
含義 |
| compile |
Regex比較 |
| exec |
執行尋找 |
| test |
進行匹配 |
| toSource |
返回特定對象的定義(literal representing),其值可用來建立一個新的對象。重載Object.toSource方法得到的。 |
| toString |
返回特定對象的串。重載Object.toString方法得到的。 |
| valueOf |
返回特定對象的原始值。重載Object.valueOf方法得到 |
例子
<script language = "JavaScript">
var myReg = /(/w+)/s(/w+)/; var str = "John Smith";
var newstr = str.replace(myReg, "$2, $1");
document.write(newstr);
</script>
將輸出"Smith, John"