JS的正則表達式正則表達式
rge.test(str) 檢驗目標對象中是否包含匹配模式,並相應的返回true或false rge.source
str.search(rge) 將返回一個整數值,指明這個匹配距離字符串開始的偏移位置。若是沒有找到匹配,則返回 -1
str.replace(re, function(){}) 替換匹配到的數值
rge.exec(str) 沒有找到匹配,則它返回 null。若是它找到匹配,則 exec 方法返回一個數
str.match(rge) 用正則表達式模式在字符串中運行查找,並返回包含該查找結果的一個數組(全文匹配模式g,不然只返回第數組
一個匹配的內容)
match 方法沒有找到匹配,返回 null。若是找到匹配返回一個數組而且更新全局 RegExp 對象的屬性以反映匹配結果
Input 屬性包含整個的被查找字符串。
Index 屬性包含了在整個被查找字符串中匹配的子字符串的位置。
LastIndex 屬性包含了最後一次匹配中最後一個字符的下一個位置。
function RegExpTest()
{
var ver = Number(ScriptEngineMajorVersion() + "." + ScriptEngineMinorVersion())
if (ver >= 5.5){ // 測試 JScript 的版本。
var src = "The rain in Spain falls mainly in the plain.";
var re = /\w+/g; // 建立正則表達式模式。
var arr;
while ((arr = re.exec(src)) != null)
document.write(arr.index + "-" + arr.lastIndex + arr + "\t");
}
else{
alert("請使用 JScript 的更新版本");
}
}
語法 1 re = /pattern/[flags]
語法 2 re = new RegExp("pattern",["flags"])
g (全文查找出現的全部 pattern)
i (忽略大小寫)
m (多行查找)
定界符:/ /
前導字符:
元字符:規定前導字符在目標對象中出現的模式測試
「+」元字符規定其前導字符必須在目標對象中連續出現一次或屢次。 /fo+/
「*」元字符規定其前導字符必須在目標對象中出現零次或連續屢次。 /eg*/
「?」元字符規定其前導對象必須在目標對象中連續出現零次或一次。 /Wil?/ url
限定符:能夠指定正則表達式的一個給定組件必需要出現多少次才能知足匹配。 {n} n {n,} {n,m}
\s:用於匹配單個空格符,包括tab鍵和換行符;
\S:用於匹配除單個空格符以外的全部字符;
\d:用於匹配從0到9的數字;[0-9]
\D:用於匹配從0到9的數字;[^0-9]
\w:用於匹配字母,數字或下劃線字符;'[A-Za-z0-9_]'
\W:用於匹配全部與\w不匹配的字符;'[^A-Za-z0-9_]'
. :用於匹配除換行符以外的全部字符。
\cx 匹配由x指明的控制字符。例如, \cM 匹配一個 Control-M 或回車符。 x 的值必須爲 A-Z 或 a-z 之一。否對象
則,將 c 視爲一個原義的 'c' 字符。
\f 匹配一個換頁符。等價於 \x0c 和 \cL。
\n 匹配一個換行符。等價於 \x0a 和 \cJ。
\r 匹配一個回車符。等價於 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、製表符、換頁符等等。等價於 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等價於 [^ \f\n\r\t\v]。
\t 匹配一個製表符。等價於 \x09 和 \cI。
\v 匹配一個垂直製表符。等價於 \x0b 和 \cK。ip
定位符:規定匹配模式在目標對象中的出現位置。 較爲經常使用的定位符包括: 「^」, 「$」, 「\b」 以及 「\B」。 字符串
「^」定位符規定匹配模式必須出如今目標字符串的開頭
「$」定位符規定匹配模式必須出如今目標對象的結尾
「\b」定位符規定匹配模式必須出如今目標字符串的開頭或結尾的兩個邊界之一
「\B」定位符則規定匹配對象必須位於目標字符串的開頭和結尾兩個邊界以內, it
爲了可以方便用戶更加靈活的設定匹配模式,正則表達式容許使用者在匹配模式中指定某一個範圍而不侷限於具體的字符。io
例如:
/([a-z][A-Z][0-9])+/ 上述正則表達式將會與任何由字母和數字組成的字符串,如 「aB0」 等相匹配。
「|」。例如:/to|too|2/ 上述正則表達式將會與目標對象中的 「to」, 「too」, 或 「2」 相匹配。
否認符 「[^]」。與咱們前文所介紹的定位符 「^」 不一樣,否認符 「[^]」規定目標對象中不能存在模式中所規 定ast
的字符串。
當「^」出如今 「[]」內時就被視作否認運算符;而當「^」位於「[]」以外,或沒有「[]」時,則應當被視作定 位
符。
? 當該字符緊跟在任何一個其餘限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模 式
儘量少的匹配所搜索的字符串,而默認的貪婪模式則儘量多的匹配所搜索的字符串。例如,對於字符串
"oooo",'o+?' 將匹配單個 "o",而 'o+' 將匹配全部 'o'。
. 匹配除 "\n" 以外的任何單個字符。要匹配包括 '\n' 在內的任何字符,請使用象 '[.\n]' 的模式。
優先級以下:
1.\ 轉義符
2.(), (?:), (?=), [] 圓括號和方括號
3.*, +, ?, {n}, {n,}, {n,m} 限定符
4.^, $, \anymetacharacter 位置和順序
5.|「或」操做
正則表達式
"^\\d+$" //非負整數(正整數 + 0)
"^[0-9]*[1-9][0-9]*$" //正整數
"^((-\\d+)|(0+))$" //非正整數(負整數 + 0)
"^-[0-9]*[1-9][0-9]*$" //負整數
"^-?\\d+$" //整數
"^\\d+(\\.\\d+)?$" //非負浮點數(正浮點數 + 0)
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點數
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$" //非正浮點數(負浮點數 + 0)
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"//負浮點數
"^(-?\\d+)(\\.\\d+)?$" //浮點數
"^[A-Za-z]+$" //由26個英文字母組成的字符串
"^[A-Z]+$" //由26個英文字母的大寫組成的字符串
"^[a-z]+$" //由26個英文字母的小寫組成的字符串
"^[A-Za-z0-9]+$" //由數字和26個英文字母組成的字符串
"^\\w+$" //由數字、26個英文字母或者下劃線組成的字符串
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$" //email地址
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$" //url "^[A-Za-z0-9_]*$" /^\[ \t]*$/ "^\[ \t]*$" 匹配一個空白行。 /\d{2}-\d{5}/ "\d{2}-\d{5}" 驗證一個ID 號碼是否由一個2位數字,一個連字符以及一個5位數字組成。 /<(.*)>.*<\/\1>/ "<(.*)>.*<\/\1>" 匹配一個 HTML 標記。