? ?? ?? js ???? ?? ?? ??? ???? ?? ?? ??? ??? ?? ???? ??? ??? ????. ???? ???? ???????.
1. ?? ??? ??
? ?? ?? ?? '^' ? '$'. ??? ??? ?? ???? ??? ?? ???? ????.
?? ??? ????:
"^The": "The"? ???? ?? ???? ?????("There", "The cat" ?).
"of ??$": "? ??? ?? ???? ?????. of ??" ???;
"^abc$": "abc"? ???? ??? ???? ?????. ??, "abc" ??? ?????.
"notice": "notice"? ???? ???? ?????.
??? ?? ?? ? ?? ?? ??? ???? ??? ???? ???? ??? ???? ?? ???? ??? ???? ????. ?, ? ?? ???? ?? ????.
?? ???? '*', '+', '?' ?? ???, ?? ?? ?? ??? ??? ????? ???? ??? ?????.
?? "?? ?? ? ??", "? ? ??" ? "?? ?? ? ?"? ?????.
??? ? ?? ????.
"ab*": ???? a ??? 0? ?? ?? ?? b? ??? ?????. ("a", "ab", "abbb",...);
"ab+": ???? a? ?? ?? ??? ?????.
"ab?": ???? ?????. a ??? 0? ?? 1?? b? ????.
"a?b+$": ??? ?? a? 0? ?? 1? ?? b? 1? ?? ?? ? ??? ?????.
???? ?? ??? ???? ?? ??? ??? ?? ????.
"ab{2}": ???? a ?? 2?? b? ??? ?????("abb").
"ab{2,}": ???? a ?? ??? 2?? b? ??? ?????.
"ab{3,5}": ???? a ??? 3~5b? ??? ?????.
??? ??? ???? ??? ?? ?????(?: "{,2}" ?? "{0,2}").
?? '*', '+' ? '?'? "{0,}", "{1,}" ? "{0,1}"? ????? ?? ????? ????.
"??" ??? ???? '|'? ????.
"hi|hello": ???? "hi" ?? "hello"? ??? ?????.
"(b|cd)ef": "bef" ?? "cdef"? ?????.
"(a|b)*c": "a"? "b" ?? "c"? ?? ?? ???? ?????.'
"a.[0-9]": ???? "a" ?? ??? ??? ??? ??? ?????.
"^.{3}$": ? ??? ??? ???? ?????. ??? 3????.)
???? ?? ??? ???? ?? ??? ??? ? ??? ?????.
"[ab]": ???? "a" ?? "b"? ??? ?????. to "a|b");
"[a-d]": ???? ??? 'a' ~ 'd' ? ??? ???? ??? ?????("a|b|c|d" ?? "[abcd ]"? ??). ;
"^[a-zA-Z]": ??? ???? ???? ?????.
"[0-9]%": ??? ?? ?? ?? ??? ?????.
",[a-zA-Z0-9]$": ???? ??? ??? ? ?? ??? ??? ?? ?? ?????.
??? ?? '^'? ???? ??? ?? ??? ??? ?? ????. '^'? ??? ?? ? ?? ???? ???.
(?: "%[^a-zA-Z]%"? ? ?? ??? ?? ??? ??? ???? ??? ?? ?????).
??? ????? "^.$()|*+?{" ?? ?? ??? ?? ''? ???? ???.
??? ??? ????? ??? ???? ????.
2. ??? ??? ?? ?? ??? ?????
1. ??? ??? ??? ? ????:
<input onkeyup="value=value.replace(/[\W]/g,'') "
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
ID="Text1"
NAME="Text1">
2. ??? ??? ? ????:
<input onkeyup="value=value.replace(/[^\d]/g,'') "
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
ID="Text2"
NAME="Text2">
3. ?? ??? ?? ??:
<input onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
ID="Text3"
NAME="Text3">
4. ??? ?? ??:
<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
ID="Text4"
NAME="Text4">
3 ??? ?? ??? ?? ?? ??
* ***** ********************************************* ****** *************************
//?? ??? ???? ??? ??
/^[0- 9]{1,20}$/
^? ^
$ ?? ??? ?? ??? ??? ???? ?? ?????. ?, $
[] ??? ?? ??? ??? ???? ??? ??? ??? ?? ?????
[0-9] ?? ?? ??? 0-9?? ?????
{1,20}? ?? ???? ???? ??? 1~20, ? [0-9]? ?? ?? ?? ??? 1~20??? ?????.
/^ ? $/? ???? ?? ???? ????? ?? ??? ?? ???? ??? ??? ??? ???? ?? ???? ?? ??? ???? ???.
************************************************* ***** *********************************
//??? ?? ??: 5-20? ??? ??? ? ????. ??, "_", "."? ??? ? ?? ???? ?????.
/^[a-zA-Z]{1}([a-zA-Z0-9]|[._] ){4,19 }$/
^[a-zA-Z]{1}? ? ?? ??? ???? ?? ?????.
([a-zA-Z0-9]|[._]){4,19}? ??? 4~9?? ???? ? ?? ??(?? ??? ?? ?? ?? ???)?? ????? ?????. ???, ???, ?? ?? ???? ??[._]?? ????? ???.
************************************************* ***** ************************************
//??? ?? ??: ? 1~30??? ?? ??
/^[a-zA-Z]{1,30}$/
********************? ???? ??? ****** ******************************************** ******* *****
//?????? : ??, ??, ?? 6~20?? ?? ??
/^(w){6,20}$/
w: ??, ?? ?? ?? ??? ????? ? ?????.
**************************************** ******* *************************************
//?? ?? ?? ? ?? ??: "+" ?? ??? ??? ? ?? "-" ? "
/^[+]{0,1}(d){1,3}[ ]?( [-]?((d)| [ ]){1,12})+$/
d: 0?? 9??? ??? ????? ? ?????.
“?”元字符規(guī)定其前導(dǎo)對象必須在目標(biāo)對象中連續(xù)出現(xiàn)零次或一次
可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等
*******************************************************************************
//校驗URL
/^http[s]{0,1}:\/\/.+$/ 或 /^http[s]{0,1}:\/\/.{1,n}$/ (表示url串的長度為length(“https://”) + n )
\ / :表示字符“/”。
. 表示所有字符的集
+ 等同于{1,},就是1到正無窮吧。
*******************************************************************************
//校驗純中文字符
/
^[\u4E00-\u9FA5]+$/
[\u4E00-\u9FA5] :估計是中文字符集的范圍吧
以上表達(dá)式均在下面的javascript中測試通過
<html>
<script language="JavaScript">
<!--
function regx(r,s)
{
if (r == null || r == ""){
return false;
}
var patrn= new RegExp(r);
if (patrn.exec(s))
return true
return false
}
-->
</script>
<body>
<form>
規(guī)則表達(dá)式 :
<input type="input" name="regxStr" value="" > (填寫/ /之間的表達(dá)式)
<br>
校驗字符串 :
<input type="input" name="str" value="" >
<input type="button" name="match" value="匹配" onClick="alert(regx(regxStr.value,str.value));">
</form>
</body>
</html>
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]*$" //?? ??
"^-?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-]+)+$" //??? ??
"^[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+(\.\d+)?$ //值類型正則表達(dá)式
5.javascript正則表達(dá)式檢驗
//校驗是否全由數(shù)字組成
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗登錄名:只能輸入5-20個以字母開頭、可帶數(shù)字、“_”、“.”的字串
function isRegisterUserName(s)
{
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗用戶姓名:只能輸入1-30個以字母開頭的字串
function isTrueName(s)
{
var patrn=/^[a-zA-Z]{1,30}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗密碼:只能輸入6-20個字母、數(shù)字、下劃線
function isPasswd(s)
{
var patrn=/^(\w){6,20}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗普通電話、傳真號碼:可以“+”開頭,除數(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 false
return true
}
//校驗手機(jī)號碼:必須以數(shù)字開頭,除數(shù)字外,可含有“-”
function isMobil(s)
{
var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;
if (!patrn.exec(s)) return false
return true
}
//校驗郵政編碼
function isPostalCode(s)
{
//var patrn=/^[a-zA-Z0-9]{3,12}$/;
var patrn=/^[a-zA-Z0-9 ]{3,12}$/;
if (!patrn.exec(s)) return false
return true
}
//校驗搜索關(guān)鍵字
function isSearch(s)
{
var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;\'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;\'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}
function isIP(s) //by zergling
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return 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 lessDate<moreDate
*********************************************************************************/
function isComdate (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 = new Date(lessy,lessm,lessd);
var Date2 = new Date(morey,morem,mored);
if (Date1>Date2) { 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; 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
**********************************************************************************/
function isReal (theStr, decLen) {
var dot1st = theStr.indexOf('.');
var dot2nd = theStr.lastIndexOf('.');
var OK = true;
if (isEmpty(theStr)) return false;
if (dot1st == -1) {
if (!isInt(theStr)) return(false);
else return(true);
}
else if (dot1st != dot2nd) return (false);
else if (dot1st==0) return (false);
else {
var intPart = theStr.substring(0, dot1st);
var decPart = theStr.substring(dot2nd+1);
if (decPart.length > decLen) 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+$" //??
"^\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+)?$" //?? ??? number
"^[A-Za-z]+$" //?? 26?? ??? ???
"^[A-Z]+$" //?? ??? 26?? ??? ???
" ^[a-z] +$" // ?? ??? 26?? ??? ???
"^[A-Za-z0-9]+$" // ??? ?? 26?? ??? ???
" ^ \w+$" //??, ?? 26? ?? ??? ??? ???
"^[\w-]+(\.[\w-]+)*@[\w-]+( \.[ \w-]+)+$" //??? ??
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-- \w+ )*))*(\?\S*)?$" //url
?? ???? ???? ???? ?? ?????. ?? ??? ???? ? ??? ??? ????.
? ??? js ???? ?? ?? ??? ?? ?????. ??? ??? PHP ??? ????? ?? ?? ??? ?????!