Dowemo
0 0 0 0

1, regular expression basic syntax

Two special symbol '^ 'and '$ '. Their role is to point out the beginning and end of a string. Example:

"^The":表示所有以"The"开始的字符串("There""The cat"等);"of despair$":表示所以以"of despair"结尾的字符串;"^abc$":表示开始和结尾都是"abc"的字符串--呵呵,只有"abc"自己了;"notice":表示任何包含"notice"的字符串。

As with the last example, if you don't use two special characters, you won't be able to position it in any part of the string that you're looking for.

Other three symbols,"* ',"+"and"?", indicate the number of times that one or a sequence of characters repeats. They mean"no or more","one or more"and"no"or"no". Here are several examples:

"ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",......);"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多;"ab?":表示一个字符串有一个a后面跟着零个或者一个b;"a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。

You can also use a range of braces to represent the range of repetition times.

"ab{2}":表示一个字符串有一个a跟着2个b("abb");"ab{2,}":表示一个字符串有一个a跟着至少2个b;"ab{3,5}":表示一个字符串有一个a跟着35个b。

Note that you must specify the lower bound of the range ( e. G.: "{0,2}", not "{,2}". Also, you may notice that"* ',"+"and"?"equivalent to "{0,}", "{1,}" and "{0,1}".

Another '¦', presentation, or operation:

"hi¦hello":表示一个字符串里有"hi"或者"hello""(b¦cd)ef":表示"bef""cdef""(a¦b)*c":表示一串"a""b"混合的字符串后面跟一个"c"'.'可以替代任何字符:"a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;"^.{3}$":表示有任意三个字符的字符串(长度为3个字符);
方括号表示某些字符允许在一个字符串中的某一特定位置出现:"[ab]":表示一个字符串有一个"a""b"(相当于"a¦b");"[a-d]":表示一个字符串包含小写的'a''d'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");"^[a-zA-Z]":表示一个以字母开头的字符串;"[0-9]%":表示一个百分号前有一位的数字;",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。

Alternatively, you can use '^' in square brackets to represent unwanted characters, and '^' should be in square brackets. ( for example, "%[^a-zA-Z]%" indicates that a letter shouldn't appear in two percent symbols.

In order to express word, you must add a transfer character '' before "^.$()¦*+?{".

Notice in square brackets that don't require escape characters.

2, regular expression validation control text box input character type

1. Only numbers and english can be entered:

<input onkeyup="value=value.replace(/[W]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))" ID="Text1" NAME="Text1">

2. You can enter only numbe &:

<input onkeyup="value=value.replace(/[^d]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^d]/g,''))" ID="Text2" NAME="Text2">

3. Only can be entered:

<input onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))" ID="Text3" NAME="Text3">

4. Only chinese characters can be entered:

<input onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))" ID="Text4" NAME="Text4">
3, application examples for regular expressio &
//校验是否全由数字组成
/^[0-9]{1,20}$/
^ 表示打头的字符要匹配紧跟^后面的规则
$ 表示打头的字符要匹配紧靠$前面的规则
[ ] 中的内容是可选字符集
[0-9] 表示要求字符范围在0-9之间{1,20}表示数字字符串长度合法为120,即为[0-9]中的字符出现次数的范围是120次。
/^ 和 $/成对使用应该是表示要求整个字符串完全匹配定义的规则,而不是只匹配字符串中的一个子串。
//校验登录名:只能输入5-20个以字母开头、可带数字、"_"、"."的字串
/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/
^[a-zA-Z]{1} 表示第一个字符要求是字母。
([a-zA-Z0-9]|[._]){4,19} 表示从第二位开始(因为它紧跟在上个表达式后面)的一个长度为49位的字符串,它要求是由大小写字母、数字或者特殊字符集[._]组成。
//校验用户姓名:只能输入1-30个以字母开头的字串
/^[a-zA-Z]{1,30}$/
//校验密码:只能输入6-20个字母、数字、下划线
/^(w){6,20}$/
w:用于匹配字母,数字或下划线字符
//校验普通电话、传真号码:可以"+"或数字开头,可含有"-" 和""
/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/
d:用于匹配从09的数字;
"?"元字符规定其前导对象必须在目标对象中连续出现零次或一次
可以匹配的字符串如:+123 -999999 ; +123-999999123999999 ;+123999999等
//校验URL/^http[s]{0,1}://.+$/或/^http[s]{0,1}://.{1,n}$/(表示url串的长度为length("https://") + n )
/:表示字符"/"。
. 表示所有字符的集
+ 等同于{1,},就是1到正无穷吧。
4, regular expression application ( common section )
"^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
/^(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+)?"//电话号码
"^(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+)?$//值类型正则表达式
5. Javascript regular expression test.
//校验是否全由数字组成functionisDigit(s){var patrn=/^[0-9]{1,20}$/;if (!patrn.exec(s)) returnfalsereturntrue}//校验登录名:只能输入5-20个以字母开头、可带数字、"_"、"."的字串functionisRegisterUserName(s){var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;if (!patrn.exec(s)) returnfalsereturntrue}//校验用户姓名:只能输入1-30个以字母开头的字串functionisTrueName(s){var patrn=/^[a-zA-Z]{1,30}$/;if (!patrn.exec(s)) returnfalsereturntrue}//校验密码:只能输入6-20个字母、数字、下划线functionisPasswd(s){var patrn=/^(w){6,20}$/;if (!patrn.exec(s)) returnfalsereturntrue}//校验普通电话、传真号码:可以"+"开头,除数字外,可含有"-"functionisTel(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)) returnfalsereturntrue}//校验手机号码:必须以数字开头,除数字外,可含有"-"functionisMobil(s){var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/;if (!patrn.exec(s)) returnfalsereturntrue}//校验邮政编码functionisPostalCode(s){//var patrn=/^[a-zA-Z0-9]{3,12}$/;var patrn=/^[a-zA-Z0-9 ]{3,12}$/;if (!patrn.exec(s)) returnfalsereturntrue}//校验搜索关键字functionisSearch(s){var patrn=/^[^`~!@#$%^&*()+=|][]{}:;',.<>/?]{1}[^`~!@$%^&()+=|][]{}:;',.<>?]{0,19}$/;if (!patrn.exec(s)) returnfalsereturntrue}functionisIP(s)//byzergling{var patrn=/^[0-9.]{1,20}$/;if (!patrn.exec(s)) returnfalsereturntrue}/*********************************************************************************
* 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.
**********************************************************************************/functionisBetween(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.
**********************************************************************************/functionisDate(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); }elseif (y.length <4) { return(false); }elseif (!isBetween (m, 1, 12)) { return(false); }elseif (m==4 || m==6 || m==9 || m==11) maxDays = 30;elseif (m==2) {if (y % 4> 0) maxDays = 28;elseif (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.
**********************************************************************************/functionisEuDate(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); }elseif (y.length <4) { return(false); }elseif (isBetween (m, 1, 12) == false) { return(false); }elseif (m==4 || m==6 || m==9 || m==11) maxDays = 30;elseif (m==2) {if (y % 4> 0) maxDays = 28;elseif (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 lessDate<moreDate
*********************************************************************************/functionisComdate(lessDate, moreDate){if (!isDate(lessDate)) { return(false);}if (!isDate(moreDate)) { return(false);}var less1st = lessDate.indexOf('-');var less2nd = lessDate.lastIndexOf('-');var more1st = moreDate.indexOf('-');var more2nd = moreDate.lastIndexOf('-');var lessy = lessDate.substring(0,less1st);var lessm = lessDate.substring(less1st+1,less2nd);var lessd = lessDate.substring(less2nd+1,lessDate.length);var morey = moreDate.substring(0,more1st);var morem = moreDate.substring(more1st+1,more2nd);var mored = moreDate.substring(more2nd+1,moreDate.length);var Date1 = newDate(lessy,lessm,lessd); var Date2 = newDate(morey,morem,mored); if (Date1>Date2) { return(false);}return(true);
}/*********************************************************************************
* FUNCTION isEmpty checks if the parameter is empty or null
* PARAMETER str AS String
**********************************************************************************/functionisEmpty(str) {if ((str==null)||(str.length==0)) returntrue;elsereturn(false);
}/*********************************************************************************
* FUNCTION: isInt
* PARAMETER: theStr AS String 
* RETURNS: TRUE if the passed parameter is an integer, otherwise FALSE
* CALLS: isDigit
**********************************************************************************/functionisInt(theStr) {var flag = true;if (isEmpty(theStr)) { flag=false; }else{ for (var i=0; i<theStr.length; i++) {if (isDigit(theStr.substring(i,i+1)) == false) {
flag = false; break;
}
}
}return(flag);
}/*********************************************************************************
* FUNCTION: isReal
* PARAMETER: heStr AS String 
decLen AS Integer (how many digits after period)
* RETURNS: TRUE if theStr is a float, otherwise FALSE
* CALLS: isInt
**********************************************************************************/functionisReal(theStr, decLen) {var dot1st = theStr.indexOf('.');var dot2nd = theStr.lastIndexOf('.');var OK = true;if (isEmpty(theStr)) returnfalse;if (dot1st == -1) {if (!isInt(theStr)) return(false);elsereturn(true);
}elseif (dot1st!= dot2nd) return (false);elseif (dot1st==0) return (false);else {var intPart = theStr.substring(0, dot1st);var decPart = theStr.substring(dot2nd+1);if (decPart.length> decLen) return(false);elseif (!isInt(intPart) ||!isInt(decPart)) return (false);elseif (isEmpty(decPart)) return (false);elsereturn(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.
*********************************************************************************/functionisEmail(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
**********************************************************************************/functionnewWindow(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
**********************************************************************************/functionDecimalFormat(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);
}



Copyright © 2011 Dowemo All rights reserved.    Creative Commons   AboutUs