正則表達(dá)式基本語(yǔ)法
1.正則表達(dá)式基本語(yǔ)法兩個(gè)特殊的符號(hào)'^'和'$'。他們的作用是分別指出一個(gè)字符串的開(kāi)始和結(jié)束。
例子如下:"^The":表示所有以"The"開(kāi)始的字符串("There","The cat"等);"of despair$":表示所以以"of despair"結(jié)尾的字符串;"^abc$":表示開(kāi)始和結(jié)尾都是"abc"的字符串——呵呵,只有"abc"自己了;"notice":表示任何包含"notice"的字符串。象最后那個(gè)例子,如果你不使用兩個(gè)特殊字符,你就在表示要查找的串在被查找串的任意部分——你并不把它定位在某一個(gè)頂端。
其它還有'*','+'和'?'這三個(gè)符號(hào),表示一個(gè)或一序列字符重復(fù)出現(xiàn)的次數(shù)。它們分別表示“沒(méi)有或更多”,“一次或更多”還有“沒(méi)有或一次”。
下面是幾個(gè)例子:"ab*":表示一個(gè)字符串有一個(gè)a后面跟著零個(gè)或若干個(gè)b。("a", "ab", "abbb",……);"ab+":表示一個(gè)字符串有一個(gè)a后面跟著至少一個(gè)b或者更多;"ab?":表示一個(gè)字符串有一個(gè)a后面跟著零個(gè)或者一個(gè)b;"a?b+$":表示在字符串的末尾有零個(gè)或一個(gè)a跟著一個(gè)或幾個(gè)b。
你也可以使用范圍,用大括號(hào)括起,用以表示重復(fù)次數(shù)的范圍。"ab{2}":表示一個(gè)字符串有一個(gè)a跟著2個(gè)b("abb");"ab{2,}":表示一個(gè)字符串有一個(gè)a跟著至少2個(gè)b;"ab{3,5}":表示一個(gè)字符串有一個(gè)a跟著3到5個(gè)b。
請(qǐng)注意,你必須指定范圍的下限(如:"{0,2}"而不是"{,2}")。還有,你可能注意到了,'*','+'和'?'相當(dāng)于"{0,}","{1,}"和"{0,1}"。還有一個(gè)'|',表示“或”操作:"hi|hello":表示一個(gè)字符串里有"hi"或者"hello";"(b|cd)ef":表示"bef"或"cdef";"(a|b)*c":表示一串"a""b"混合的字符串后面跟一個(gè)"c";'.'可以替代任何字符:"a.[0-9]":表示一個(gè)字符串有一個(gè)"a"后面跟著一個(gè)任意字符和一個(gè)數(shù)字;"^.{3}$":表示有任意三個(gè)字符的字符串(長(zhǎng)度為3個(gè)字符);方括號(hào)表示某些字符允許在一個(gè)字符串中的某一特定位置出現(xiàn):"[ab]":表示一個(gè)字符串有一個(gè)"a"或"b"(相當(dāng)于"a|b");"[a-d]":表示一個(gè)字符串包含小寫(xiě)的'a'到'd'中的一個(gè)(相當(dāng)于"a|b|c|d"或者"[abcd]");"^[a-zA-Z]":表示一個(gè)以字母開(kāi)頭的字符串;"[0-9]%":表示一個(gè)百分號(hào)前有一位的數(shù)字;",[a-zA-Z0-9]$":表示一個(gè)字符串以一個(gè)逗號(hào)后面跟著一個(gè)字母或數(shù)字結(jié)束。
你也可以在方括號(hào)里用'^'表示不希望出現(xiàn)的字符,'^'應(yīng)在方括號(hào)里的第一位。(如:"%[^a-zA-Z]%"表示兩個(gè)百分號(hào)中不應(yīng)該出現(xiàn)字母)。為了逐字表達(dá),你必須在"^.$()|*+?{\"這些字符前加上轉(zhuǎn)移字符'\'。請(qǐng)注意在方括號(hào)中,不需要轉(zhuǎn)義字符。
2.正則表達(dá)式驗(yàn)證控制文本框的輸入字符類(lèi)型1.只能輸入數(shù)字和英文的:2.只能輸入數(shù)字的:3.只能輸入全角的:4.只能輸入漢字的:
3.正則表達(dá)式的應(yīng)用實(shí)例通俗說(shuō)明 *******************************************************************************
//校驗(yàn)是否全由數(shù)字組成/^[0-9]{1,20}$/ ^ 表示打頭的字符要匹配緊跟^后面的規(guī)則$ 表示打頭的字符要匹配緊靠$前面的規(guī)則[ ] 中的內(nèi)容是可選字符集[0-9] 表示要求字符范圍在0-9之間{1,20}表示數(shù)字字符串長(zhǎng)度合法為1到20,即為[0-9]中的字符出現(xiàn)次數(shù)的范圍是1到20次。 /^ 和 $/成對(duì)使用應(yīng)該是表示要求整個(gè)字符串完全匹配定義的規(guī)則,而不是只匹配字符串中的一個(gè)子串。 *******************************************************************************
//校驗(yàn)登錄名:只能輸入5-20個(gè)以字母開(kāi)頭、可帶數(shù)字、“_”、“.”的字串/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/ ^[a-zA-Z]{1} 表示第一個(gè)字符要求是字母。([a-zA-Z0-9]|[._]){4,19} 表示從第二位開(kāi)始(因?yàn)樗o跟在上個(gè)表達(dá)式后面)的一個(gè)長(zhǎng)度為4到9位的字符串,它要求是由大小寫(xiě)字母、數(shù)字或者特殊字符集[._]組成。 *******************************************************************************
//校驗(yàn)用戶(hù)姓名:只能輸入1-30個(gè)以字母開(kāi)頭的字串/^[a-zA-Z]{1,30}$/ *******************************************************************************
//校驗(yàn)密碼:只能輸入6-20個(gè)字母、數(shù)字、下劃線(xiàn)/^(\w){6,20}$/ \w:用于匹配字母,數(shù)字或下劃線(xiàn)字符 *******************************************************************************
//校驗(yàn)普通電話(huà)、傳真號(hào)碼:可以“+”或數(shù)字開(kāi)頭,可含有“-” 和 “ ”/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/ \d:用于匹配從0到9的數(shù)字;“?”元字符規(guī)定其前導(dǎo)對(duì)象必須在目標(biāo)對(duì)象中連續(xù)出現(xiàn)零次或一次 可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等? ? ? *******************************************************************************
//校驗(yàn)URL/^http[s]{0,1}:\/\/.+$/ 或 /^http[s]{0,1}:\/\/.{1,n}$/ (表示url串的長(zhǎng)度為length(“https://”) + n ) \ / :表示字符“/”。. 表示所有字符的集+ 等同于{1,},就是1到正無(wú)窮吧。 *******************************************************************************//校驗(yàn)純中文字符/^[\u4E00-\u9FA5]+$/ [\u4E00-\u9FA5] :估計(jì)是中文字符集的范圍吧 以上表達(dá)式均在下面的javascript中測(cè)試通過(guò)
規(guī)則表達(dá)式 :(填寫(xiě)/ /之間的表達(dá)式)
校驗(yàn)字符串 :
4.正則表達(dá)式應(yīng)用 "^\d+$" //非負(fù)整數(shù)(正整數(shù) + 0) "^[0-9]*[1-9][0-9]*$" //正整數(shù) "^((-\d+)|(0+))$" //非正整數(shù)(負(fù)整數(shù) + 0) "^-[0-9]*[1-9][0-9]*$" //負(fù)整數(shù) "^-?\d+$" //整數(shù) "^\d+(\.\d+)?$" //非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0) "^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點(diǎn)數(shù) "^((-\d+(\.\d+)?)|(0+(\.0+)?))$" //非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0) "^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負(fù)浮點(diǎn)數(shù) "^(-?\d+)(\.\d+)?$" //浮點(diǎn)數(shù) "^[A-Za-z]+$" //由26個(gè)英文字母組成的字符串 "^[A-Z]+$" //由26個(gè)英文字母的大寫(xiě)組成的字符串 "^[a-z]+$" //由26個(gè)英文字母的小寫(xiě)組成的字符串 "^[A-Za-z0-9]+$" //由數(shù)字和26個(gè)英文字母組成的字符串 "^\w+$" //由數(shù)字、26個(gè)英文字母或者下劃線(xiàn)組成的字符串 "^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$" //email地址 "^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$" //url/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/? //? 年-月-日/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/? // 月/日/年"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"? //Emil"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"? ? //電話(huà)號(hào)碼"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"? //IP地址^([0-9A-F]{2})(-[0-9A-F]{2}){5}$? //MAC地址的正則表達(dá)式^[-+]?\d+(\.\d+)?$? //值類(lèi)型正則表達(dá)式5.javascript正則表達(dá)式檢驗(yàn)//校驗(yàn)是否全由數(shù)字組成function isDigit(s){var patrn=/^[0-9]{1,20}$/;if (!patrn.exec(s)) return falsereturn true}//校驗(yàn)登錄名:只能輸入5-20個(gè)以字母開(kāi)頭、可帶數(shù)字、“_”、“.”的字串function isRegisterUserName(s){var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;if (!patrn.exec(s)) return falsereturn true}//校驗(yàn)用戶(hù)姓名:只能輸入1-30個(gè)以字母開(kāi)頭的字串function isTrueName(s){var patrn=/^[a-zA-Z]{1,30}$/;if (!patrn.exec(s)) return falsereturn true}//校驗(yàn)密碼:只能輸入6-20個(gè)字母、數(shù)字、下劃線(xiàn)function isPasswd(s){var patrn=/^(\w){6,20}$/;if (!patrn.exec(s)) return falsereturn true}//校驗(yàn)普通電話(huà)、傳真號(hào)碼:可以“+”開(kāi)頭,除數(shù)字外,可含有“-”function isTel(s){//var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;if (!patrn.exec(s)) return falsereturn true}//校驗(yàn)手機(jī)號(hào)碼:必須以數(shù)字開(kāi)頭,除數(shù)字外,可含有“-”function isMobil(s){var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;if (!patrn.exec(s)) return falsereturn true}//校驗(yàn)郵政編碼function isPostalCode(s){//var patrn=/^[a-zA-Z0-9]{3,12}$/;var patrn=/^[a-zA-Z0-9 ]{3,12}$/;if (!patrn.exec(s)) return falsereturn true}//校驗(yàn)搜索關(guān)鍵字function isSearch(s){var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;\'\,.<>?]{0,19}$/;if (!patrn.exec(s)) return falsereturn true}function isIP(s) //by zergling{var patrn=/^[0-9.]{1,20}$/;if (!patrn.exec(s)) return falsereturn true}? /
********************************************************************************** FUNCTION: isBetween* PARAMETERS: val AS any value* lo AS Lower limit to check* hi AS Higher limit to check* CALLS: NOTHING* RETURNS: TRUE if val is between lo and hi both inclusive, otherwise false.
**********************************************************************************
/function isBetween (val, lo, hi) {if ((val < lo) || (val > hi)) { return(false); }else { return(true); }}/
********************************************************************************** FUNCTION: isDate checks a valid date* PARAMETERS: theStr AS String* CALLS: isBetween, isInt* RETURNS: TRUE if theStr is a valid date otherwise false.
**********************************************************************************
/function isDate (theStr) {var the1st = theStr.indexOf('-');var the2nd = theStr.lastIndexOf('-');if (the1st == the2nd) { return(false); }else {var y = theStr.substring(0,the1st);var m = theStr.substring(the1st+1,the2nd);var d = theStr.substring(the2nd+1,theStr.length);var maxDays = 31;if (isInt(m)==false || isInt(d)==false || isInt(y)==false) {return(false); }else if (y.length < 4) { return(false); }else if (!isBetween (m, 1, 12)) { return(false); }else if (m==4 || m==6 || m==9 || m==11) maxDays = 30;else if (m==2) {if (y % 4 > 0) maxDays = 28;else if (y % 100 == 0 && y % 400 > 0) maxDays = 28;else maxDays = 29;}if (isBetween(d, 1, maxDays) == false) { return(false); }else { return(true); }}}/
********************************************************************************** FUNCTION: isEuDate checks a valid date in British format* PARAMETERS: theStr AS String* CALLS: isBetween, isInt* RETURNS: TRUE if theStr is a valid date otherwise false.
**********************************************************************************
/function isEuDate (theStr) {if (isBetween(theStr.length, 8, 10) == false) { return(false); }else {var the1st = theStr.indexOf('/');var the2nd = theStr.lastIndexOf('/');if (the1st == the2nd) { return(false); }else {var m = theStr.substring(the1st+1,the2nd);var d = theStr.substring(0,the1st);var y = theStr.substring(the2nd+1,theStr.length);var maxDays = 31;if (isInt(m)==false || isInt(d)==false || isInt(y)==false) {return(false); }else if (y.length < 4) { return(false); }else if (isBetween (m, 1, 12) == false) { return(false); }else if (m==4 || m==6 || m==9 || m==11) maxDays = 30;else if (m==2) {if (y % 4 > 0) maxDays = 28;else if (y % 100 == 0 && y % 400 > 0) maxDays = 28;else maxDays = 29;}if (isBetween(d, 1, maxDays) == false) { return(false); }else { return(true); }}}}/
********************************************************************************* FUNCTION: Compare Date! Which is the latest!* PARAMETERS: lessDate,moreDate AS String* CALLS: isDate,isBetween* RETURNS: TRUE if lessDateDate2) { return(false);}return(true);}/
********************************************************************************** FUNCTION isEmpty checks if the parameter is empty or null* PARAMETER str AS String
**********************************************************************************
/function isEmpty (str) {if ((str==null)||(str.length==0)) return true;else return(false);}/
********************************************************************************** FUNCTION: isInt* PARAMETER: theStr AS String * RETURNS: TRUE if the passed parameter is an integer, otherwise FALSE* CALLS: isDigit
**********************************************************************************
/function isInt (theStr) {var flag = true;if (isEmpty(theStr)) { flag=false; }else{ for (var i=0; idecLen) return(false);
else if (!isInt(intPart) || !isInt(decPart)) return (false);
else if (isEmpty(decPart)) return (false);
else return(true);
}
}
/
*********************************************************************************
* FUNCTION: isEmail
* PARAMETER: String (Email Address)
* RETURNS: TRUE if the String is a valid Email address
* FALSE if the passed string is not a valid Email Address
* EMAIL FORMAT: AnyName@EmailServer e.g; webmaster@hotmail.com
* @ sign can appear only once in the email address.
*********************************************************************************
/
function isEmail (theStr) {
var atIndex = theStr.indexOf('@');
var dotIndex = theStr.indexOf('.', atIndex);
var flag = true;
theSub = theStr.substring(0, dotIndex+1)
if ((atIndex < 1)||(atIndex != theStr.lastIndexOf('@'))||(dotIndex < atIndex + 2)||(theStr.length <= theSub.length))
{ return(false); }
else { return(true); }
}
/
*********************************************************************************
* FUNCTION: newWindow
* PARAMETERS: doc -> Document to open in the new window
hite -> Height of the new window
wide -> Width of the new window
bars -> 1-Scroll bars = YES 0-Scroll Bars = NO
resize -> 1-Resizable = YES 0-Resizable = NO
* CALLS: NONE
* RETURNS: New window instance
**********************************************************************************
/
function newWindow (doc, hite, wide, bars, resize) {
var winNew="_blank";
var opt="toolbar=0,location=0,directories=0,status=0,menubar=0,";
opt+=("scrollbars="+bars+",");
opt+=("resizable="+resize+",");
opt+=("width="+wide+",");
opt+=("height="+hite);
winHandle=window.open(doc,winNew,opt);
return;
}
/
*********************************************************************************
* FUNCTION: DecimalFormat
* PARAMETERS: paramValue -> Field value
* CALLS: NONE
* RETURNS: Formated string
**********************************************************************************
/
function DecimalFormat (paramValue) {
var intPart = parseInt(paramValue);
var decPart =parseFloat(paramValue) - intPart;
str = "";
if ((decPart == 0) || (decPart == null)) str += (intPart + ".00");
else str += (intPart + decPart);
return (str);
}
"^\\d+$" //非負(fù)整數(shù)(正整數(shù) + 0)
"^[0-9]*[1-9][0-9]*$" //正整數(shù)
"^((-\\d+)|(0+))$" //非正整數(shù)(負(fù)整數(shù) + 0)
"^-[0-9]*[1-9][0-9]*$" //負(fù)整數(shù)
"^-?\\d+$" //整數(shù)
"^\\d+(\\.\\d+)?$" //非負(fù)浮點(diǎn)數(shù)(正浮點(diǎn)數(shù) + 0)
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$" //正浮點(diǎn)數(shù)
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$" //非正浮點(diǎn)數(shù)(負(fù)浮點(diǎn)數(shù) + 0)
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$" //負(fù)浮點(diǎn)數(shù)
"^(-?\\d+)(\\.\\d+)?$" //浮點(diǎn)數(shù)
"^[A-Za-z]+$" //由26個(gè)英文字母組成的字符串
"^[A-Z]+$" //由26個(gè)英文字母的大寫(xiě)組成的字符串
"^[a-z]+$" //由26個(gè)英文字母的小寫(xiě)組成的字符串
"^[A-Za-z0-9]+$" //由數(shù)字和26個(gè)英文字母組成的字符串
"^\\w+$" //由數(shù)字、26個(gè)英文字母或者下劃線(xiàn)組成的字符串
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$" //email地址
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$" //url
轉(zhuǎn)載自網(wǎng)絡(luò)