1. 程式人生 > >小白學習路之js正則表示式

小白學習路之js正則表示式

在JavaScript裡面判斷一個字串是否是電子郵件的格式:

程式碼如下:

if(formname.email.value!=formname.email.value.match(/^\w +[@]\w +[.][\w.] +$/)) 
{ 
alert("您的電子郵件格式錯誤!"); 
formname.email.focus(); 
return false; 
}

javascript的17種正則表示式

"^\\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

javascript正則表示式檢驗

程式碼如下:

//校驗是否全由數字組成 
function isDigit(s) 
{ 
var patrn=/^[0-9]{1,20}$/; 
if (!patrn.exec(s)) return false    //看輸入的值 是否與正則表示式相匹配;如果 exec 方法沒有找到匹配,則它返回 null。如果它找到匹配,則 exec 方法返回一個數組.
return true 
}
//校驗登入名:只能輸入5-20個以字母開頭、可帶數字、“_”、“.”的字串 
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個字母、數字、下劃線 
function isPasswd(s) 
{ 
var patrn=/^(\w){6,20}$/; 
if (!patrn.exec(s)) return false 
return true 
}

//校驗普通電話、傳真號碼:可以“+”開頭,除數字外,可含有“-” 
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 
}

//校驗手機號碼:必須以數字開頭,除數字外,可含有“-” 
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 
}

//校驗搜尋關鍵字 
function isSearch(s) 
{ 
var patrn=/^[^`[email protected]#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{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 
} 

正則表示式中的特殊字元:

字元\ 意義:對於字元,通常表示按字面意義,指出接著的字元為特殊字元,\不作解釋。 例如:/b/匹配字元’b’,通過在b 前面加一個反斜槓\,也就是/\b/,則該字元變成特殊字元,表示匹配一個單詞的分界線。

或者: 對於幾個字元,通常說明是特殊的,指出緊接著的字元不是特殊的,而應該按字面解釋。 例如:∗是一個特殊字元,匹配任意個字元(包括0個字元);例如:/a*/意味匹配0個或多個a。

為了匹配字面上的*,在a前面加一個反斜槓;例如:/a\*/匹配'a*'

字元^ 意義:表示匹配的字元必須在最前邊。 例如:/^A/不匹配"an A,"中的’A’,但匹配"An A."中最前面的’A’。

字元$ 意義:與^類似,匹配最末的字元。 例如:/t$/不匹配"eater"中的’t’,但匹配"eat"中的’t’。

字元* 
意義:匹配*前面的字元0次或n次。 
例如:/bo*/匹配"A ghost booooed"中的'boooo'"A bird warbled"中的'b',但不匹配"A goat grunted"中的任何字元。

字元+ 意義:匹配+號前面的字元1次或n次。等價於{1,}。 例如:/a+/匹配"candy"中的’a’和"caaaaaaandy."中的所有’a’。

字元? 意義:匹配?前面的字元0次或1次。 例如:/e?le?/匹配"angel"中的’el’和"angle."中的’le’。

字元. 意義:(小數點)匹配除換行符外的所有單個的字元。 例如:/.n/匹配"nay, an apple is on the tree"中的’an’和’on’,但不匹配’nay’。

字元(x) 意義:匹配’x’並記錄匹配的值。 例如:/(foo)/匹配和記錄"foo bar."中的’foo’。匹配子串能被結果陣列中的素[1], …, [n] 返回,或被RegExp物件的屬性$1, …, $9返回。

字元x|y 意義:匹配’x’或者’y’。 例如:/green|red/匹配"green apple"中的’green’和"red apple."中的’red’。

字元{n} 意義:這裡的n是一個正整數。匹配前面的n個字元。 例如:/a{2}/不匹配"candy,“中的’a’,但匹配"caandy,” 中的所有’a’和"caaandy."中前面的兩個 ‘a’。

字元{n,} 意義:這裡的n是一個正整數。匹配至少n個前面的字元。 例如:/a{2,}不匹配"candy"中的’a’,但匹配"caandy"中的所有’a’和"caaaaaaandy."中的所有’a’

字元{n,m} 意義:這裡的n和m都是正整數。匹配至少n個最多m個前面的字元。 例如:/a{1,3}/不匹配"cndy"中的任何字元,但匹配 “candy,“中的’a’,“caandy,” 中的前面兩個 ‘a’和"caaaaaaandy"中前面的三個’a’,注意:即使"caaaaaaandy” 中有很多個’a’,但只匹配前面的三個’a’即"aaa”。

字元[xyz] 意義:一字元列表,匹配列出中的任一字元。你可以通過連字元-指出一個字元範圍。 例如:[abcd]跟[a-c]一樣。它們匹配"brisket"中的’b’和"ache"中的’c’。

字元[^xyz] 
意義:一字元補集,也就是說,它匹配除了列出的字元外的所有東西。 你可以使用連字元-指出一 字元範圍。 
例如:[^abc][^a-c]等價,它們最早匹配"brisket"中的'r'"chop."中的'h'

字元[\b] 意義:匹配一個空格(不要與\b混淆)

字元\b 意義:匹配一個單詞的分界線,比如一個空格(不要與[\b]混淆) 例如:/\bn\w/匹配"noonday"中的’no’,/\wy\b/匹配"possibly yesterday."中的’ly’。

字元\B 意義:匹配一個單詞的非分界線 例如:/\w\Bn/匹配"noonday"中的’on’,/y\B\w/匹配"possibly yesterday."中的’ye’。

字元\cX 意義:這裡的X是一個控制字元。匹配一個字串的控制字元。 例如:/\cM/匹配一個字串中的control-M。

字元\d 意義:匹配一個數字,等價於[0-9]。 例如:/\d/或/[0-9]/匹配"B2 is the suite number."中的’2’。

字元\D 意義:匹配任何的非數字,等價於[^0-9]。 例如:/\D/或/[^0-9]/匹配"B2 is the suite number."中的’B’。

字元\f 意義:匹配一個表單符

字元\n 意義:匹配一個換行符

字元\r 意義:匹配一個回車符

字元\s 意義:匹配一個單個white空格符,包括空格,tab,form feed,換行符,等價於[ \f\n\r\t\v]。 例如:/\s\w*/匹配"foo bar."中的’ bar’。

字元\S 意義:匹配除white空格符以外的一個單個的字元,等價於[^ \f\n\r\t\v]。 例如:/\S/\w*匹配"foo bar."中的’foo’。

字元\t 意義:匹配一個製表符

字元\v 意義:匹配一個頂頭製表符

字元\w 意義:匹配所有的數字和字母以及下劃線,等價於[A-Za-z0-9_]。 例如:/\w/匹配"apple,“中的’a’,”$5.28,"中的’5’和"3D."中的’3’。

字元\W 意義:匹配除數字、字母外及下劃線外的其它字元,等價於[^A-Za-z0-9_]。 例如:/\W/或者/[^$A-Za-z0-9_]/匹配"50%."中的’%’。

字元\n 意義:這裡的n是一個正整數。匹配一個正則表示式的最後一個子串的n的值(計數左圓括號)。

例如:/apple(,)\sorange\1/匹配"apple, orange, cherry, peach."中的’apple, orange’,下面有一個更加完整的例子。 注意:如果左圓括號中的數字比\n指定的數字還小,則\n取下一行的八進位制escape作為描述。

字元\ooctal和\xhex 意義:這裡的\ooctal是一個八進位制的escape值,而\xhex是一個十六進位制的escape值,允許在一個正則表示式中嵌入ASCII碼。     採用正則表示式,來去除兩邊的空格

String.prototype.trim = function() 
{ 
return this.replace(/(^\s*)|(\s*$)/g, ""); 
}

  ! 移動手機號的校驗

如果採用傳統的校驗方式至少就要完成下面三步的校驗,

(1). 是否是數字

(2).是否是11位

(3).數字的第三位是否是5,6,7,8,9

如果採用正則表示式校驗,只需以下程式碼

程式碼如下:

function checkMobile(form){
	if(form.moblie.value>""){
		var reg = /13[5,6,7,8,9]\d{8}/;
		if(form.mobile.value.match(reg)==null){
			alert("請輸入正確的移動手機號!");
			form.mobile.focus();
			retuen false;
		}
	}
	return true;
}

   ! URL的校驗 條件:必須以http:// 或 https:// 開頭, 埠號必須為在1-65535 之間, 以下程式碼完成了合法性校驗

程式碼如下:

//obj:資料物件 
//dispStr :失敗提示內容顯示字串 
function checkUrlValid( obj, dispStr) 
{ 
if(obj == null) 
{ 
alert("傳入物件為空"); 
return false; 
} 
var str = obj.value;
var urlpatern0 = /^https?:\/\/.+$/i; 
if(!urlpatern0.test(str)) 
{ 
alert(dispStr+"不合法:必須以'http:\/\/'或'https:\/\/'開頭!"); 
obj.focus(); 
return false; 
}

var urlpatern2= /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?.+$/i; 
if(!urlpatern2.test(str)) 
{ 
alert(dispStr+"埠號必須為數字且應在1-65535之間!"); 
obj.focus(); 
return false; 
}


var urlpatern1 =/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;

if(!urlpatern1.test(str)) 
{ 
alert(dispStr+"不合法,請檢查!"); 
obj.focus(); 
return false; 
}

var s = "0"; 
var t =0; 
var re = new RegExp(":\\d+","ig"); 
while((arr = re.exec(str))!=null) 
{ 
s = str.substring(RegExp.index+1,RegExp.lastIndex);

if(s.substring(0,1)=="0") 
{ 
alert(dispStr+"埠號不能以0開頭!"); 
obj.focus(); 
return false; 
}

t = parseInt(s); 
if(t<1 || t >65535) 
{ 
alert(dispStr+"埠號必須為數字且應在1-65535之間!"); 
obj.focus(); 
return false; 
} 
} 
return true; 
} 

對url的校驗,看上去有很多的程式碼,這是因為要給予出錯提示, 否則只需

var urlpatern1 =/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;

一句就可以校驗出url合法性了       以上內容摘自:W3Cschool 連結地址:js常用的正則表示式