正則表達式(regular expression)對象包含一個正則表達式模式(pattern)。它具有用正則表達式模式去匹配或代替一個串(string)中特定字符(或字符集合)的屬性(properties)和方法(methods)。 要爲一個單獨的正則表達式添加屬性,可以使用正則表達式構造函數(constructor function),無論何時被調用的預設置的正則表達式擁有靜態的屬性(the predefined RegExp object has static properties that are set whenever any regular expression is used, 我不知道我翻得對不對,將原文列出,請自行翻譯)。
- 創建:
一個文本格式或正則表達式構造函數
文本格式: /pattern/flags
正則表達式構造函數: new RegExp("pattern"[,"flags"]); - 參數說明:
pattern -- 一個正則表達式文本
flags -- 如果存在,將是以下值:
g: 全局匹配
i: 忽略大小寫
gi: 以上組合
[注意] 文本格式的參數不用引號,而在用構造函數時的參數需要引號。如:/ab+c/i new RegExp("ab+c","i")是實現一樣的功能。在構造函數中,一些特殊字符需要進行轉意(在特殊字符前加"/")。如:re = new RegExp("//w+")
正則表達式中的特殊字符
|
說了這麼多了,我們來看一些正則表達式的實際應用的例子:
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>");
}正則表達式對象的屬性及方法
預定義的正則表達式擁有有以下靜態屬性:input, multiline, lastMatch, lastParen, leftContext, rightContext和$1到$9。其中input和multiline可以預設置。其他屬性的值在執行過exec或test方法後被根據不同條件賦以不同的值。許多屬性同時擁有長和短(perl風格)的兩個名字,並且,這兩個名字指向同一個值。(JavaScript模擬perl的正則表達式)
正則表達式對象的屬性
屬性 含義 $1...$9 如果它(們)存在,是匹配到的子串 $_ 參見input $* 參見multiline $& 參見lastMatch $+ 參見lastParen $` 參見leftContext $' 參見rightContext constructor 創建一個對象的一個特殊的函數原型 global 是否在整個串中匹配(bool型) ignoreCase 匹配時是否忽略大小寫(bool型) input 被匹配的串 lastIndex 最後一次匹配的索引 lastParen 最後一個括號括起來的子串 leftContext 最近一次匹配以左的子串 multiline 是否進行多行匹配(bool型) prototype 允許附加屬性給對象 rightContext 最近一次匹配以右的子串 source 正則表達式模式 lastIndex 最後一次匹配的索引
正則表達式對象的方法
方法 含義 compile 正則表達式比較 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"
轉載自:飛揚部落編程倉庫 : http://www.busfly.cn/csdn/