何謂正則式?
正規表示式使用單個字串來描述、符合一系列符合某個句法規則的字串甚麼時候會用到?
正則運算式通常被用來檢索、取代那些符合的字串。字元 | 描述 |
---|---|
^ | 匹配輸入的開始位置。 |
$ | 匹配輸入的結尾。 |
* | 匹配前一個字符零次或幾次。例如,"zo*"可以匹配"z"、"zoo"。 |
+ | 匹配前一個字符一次或多次。例如,"zo+"可以匹配"zoo",但不匹配"z"。 |
? | 匹配前一個字符零次或一次。例如,"a?ve?"可以匹配"never"中的"ve"。 |
. | 匹配換行符以外的任何字符。 |
{n} | n是一個非負整數。符合確定的n次。例如,「o{2} 」不能符合「Bob 」中的「o 」,但是能符合「food 」中的兩個o。 |
{n,} | n是一個非負整數。至少符合n次。例如,「o{2,} 」不能符合「Bob 」中的「o 」,但能符合「foooood 」中的所有o。「o{1,} 」等價於「o+ 」。「o{0,} 」則等價於「o* 」。 |
{n,m} | m和n均為非負整數,其中n<=m。最少符合n次且最多符合m次。例如,「o{1,3} 」將符合「fooooood 」中的前三個o。「o{0,1} 」等價於「o? 」。請注意在逗號和兩個數之間不能有空格。 |
(pattern) | 與模式匹配並記住匹配。匹配的子字符串可以從作為結果的 Matches 集合中使用 Item [0]...[n]取得。如果要匹配括號字符(和 ),可使用"(" 或 ")"。 |
x|y | 一個字符集。與括號中字符的其中之一匹配。例如,"[abc]" 匹配"plain"中的"a"。 |
[xyz] | 符合pattern並取得這一符合的子字串。該子字串用於向後參照。所取得的符合可以從產生的Matches集合得到,在VBScript中使用SubMatches集合,在JScript中則使用$0…$9屬性。要符合圓括號字元,請使用「\( 」或「\) 」。 |
[^xyz] | 一個否定的字符集。匹配不在此括號中的任何字符。例如,"[^abc]" 可以匹配"plain"中的"p"。 |
[a-z] | 表示某個範圍內的字符。與指定區間內的任何字符匹配。例如,"[a-z]"匹配"a"與"z"之間的任何一個小寫字母字符。 |
[^m-z] | 否定的字符區間。與不在指定區間內的字符匹配。例如,"[m-z]"與不在"m"到"z"之間的任何字符匹配。 |
b | 與單詞的邊界匹配,即單詞與空格之間的位置。例如,"erb" 與"never"中的"er"匹配,但是不匹配"verb"中的"er"。 |
B | 與非單詞邊界匹配。"ea*rB"與"never early"中的"ear"匹配。 |
d | 與一個數字字符匹配。等價於[0-9]。 |
D | 與非數字的字符匹配。等價於[^0-9]。 |
f | 與分頁符匹配。 |
n | 與換行符字符匹配。 |
r | 與回車字符匹配。 |
s | 與任何白字符匹配,包括空格、制表符、分頁符等。等價於"[ fnrtv]"。 |
S | 與任何非空白的字符匹配。等價於"[^ fnrtv]"。 |
t | 符合一個制表符。等價於\x09和\cI |
v | 與垂直制表符匹配。 |
w | 與任何單詞字符匹配,包括下劃線。等價於"[A-Za-z0-9_]"。 |
num | 匹配 num個,其中 num 為一個正整數。引用回到記住的匹配。例如,"(.)1"匹配兩個連續的相同的字符。 |
xn | xn 匹配n,其中n是一個十六進制的換碼值。十六進制換碼值必須恰好為兩個數字長。例如,"x41"匹配"A"。"x041"等價於"x04" 和 "1"。 |
EX:
Email : /^\w+([-+.]\w+)*@\w+([-.]\\w+)*\.\w+([-.]\w+)*$/,
Phone : /^((\(\d{3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}$/,
Mobile : /^((\(\d{3}\))|(\d{3}\-))?13\d{9}$/,
Url : /^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$/,
IdCard : /^\d{15}(\d{2}[A-Za-z0-9])?$/,
Currency : /^\d+(\.\d+)?$/,
Number : /^\d+$/,
Zip : /^[1-9]\d{5}$/,
QQ : /^[1-9]\d{4,8}$/,
Integer : /^[-\+]?\d+$/,
Double : /^[-\+]?\d+(\.\d+)?$/,
English : /^[A-Za-z]+$/,
Chinese : /^[\u0391-\uFFE5]+$/,
負整數 : /^-[0-9]*[1-9][0-9]*$/ //負整數
/^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$/
負浮點數
set RegEx = New RegExp '建立正則表達式
regEx.Pattern = patterns ' 設置模式
regEx.IgnoreCase = True ' 設置是否區分字符大小寫
regEx.Global = True '設置全局可用性
regEx.compile '編譯正則式
regEx.exec '檢查字串中指定的值並返回找到的值
regEx.Test '檢查字串中的值是否相同 回傳True /False
實作的例子 身分證驗證與 日期驗證
function Del_PAXV() {
var test1 = document.getElementById("test").value;
var passwd1 = document.getElementById("passwd").value;
var temp =/^\d{4}-\d{2}-\d{2}/ ;
var temp1 = /^[A-Z]{1}[0-9]{9}$/;
if (confirm("是否是您輸入的密碼呢?")){
if (temp1.test(passwd1) == true){
alert("密碼格式正確");
}else{
alert("密碼格式不正確");
document.getElementById("passwd").value = "";
}
}
else{
alert("密碼格式錯誤");
}
if (confirm("是否是您輸入的日期呢?")){
alert("OK 已收到");
if (temp.test(test1) == true){
alert("是日期格式");
}else{
alert("不適日期格式,請重新輸入");
document.getElementById("test").value = "";
return false ;
}
}
else
{
alert("請重新輸入");
document.getElementById("test").value = "";
return false ;
}
}