一些常用的正則表達式


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>email + jquery 正則表達式</title>
</head>
<script type="text/javascript" src="js/jquery-1.4.2.min.js"></script>
<script type="text/javaScript">
jQuery(function(){
$("#email").blur(function(){
var txtValid = $(this).val();
var re = /^[a-zA-Z]([a-zA-Z0-9]*[-_.]?[a-zA-Z0-9]+)+@([w-]+.)+[a-zA-Z]{2,}$/i;
if(!re.test(txtValid)){
alert('Error,check email');
return;
}
else{
alert('Good');
}
});
});
</script>
<body>
<input type="text" name="email" id="email">
</body>
</html>


1.非負整數 /^d+$/
2.正整數 /^[0-9]*[1-9][0-9]*$/
3.非正整數 /^((-d+)|(0+))$/
4.負整數 /^-[0-9]*[1-9][0-9]*$/
5.整數 /^-?d+$/
6.非負浮點數 /^d+(.d+)?$/
7.正浮點數 /^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$/
8.非正浮點數 /^((-d+(.d+)?)|(0+(.0+)?))$/
9.負浮點數 /^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$/
10.浮點數 /^(-?d+)(.d+)?$/
11.數字 /^d+(.{1}d+)?$/
12.由26個英文字母組成的字符串 /^[A-Za-z]+$/
13.由26個英文字母的大寫組成的字符串 /^[A-Z]+$/
14.由26個英文字母的小寫組成的字符串 /^[a-z]+$/
15.由數字和26個英文字母組成的字符串 /^[A-Za-z0-9]+$/
16.由數字、26個英文字母或者下劃線組成的字符串 /^w+$/
17.匹配所有單字節長度的字符組成的字符串 /^[-�]+$/
18.匹配所有雙字節長度的字符組成的字符串 /^[^-�]+$/
19.字符串是否含有雙字節字 /[^-�]+/
20.email地址 /^[w-]+(.[w-]+)*@[w-]+(.[w-]+)+$/
或者 /w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*/
21.url地址 /^[a-zA-z]+://(w+(-w+)*)(.(w+(-w+)*))*(?S*)?$/
或者 /http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?/
22.匹配中文字符的正則 /[u4e00-u9fa5]/
23.匹配雙字節字符(包括漢字在內) /[^x00-xff]/
應用:計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)
String.prototype.len=function(){
return this.replace([^x00-xff]/g,"aa").length;
}
24.匹配空行的正則 /n[s| ]*r/
25.匹配HTML標記的正則 /<(.*)>.*</1>|<(.*) />/
26.匹配首尾空格的正則 /(^s*)|(s*$)/
應用:javascript中沒有像vbscript那樣的trim函數,我們就可以利用這個表達式來實現,如下:
String.prototype.trim = function(){
return this.replace(/(^s*)|(s*$)/g, "");
}
27.匹配IP地址的正則 /(d+).(d+).(d+).(d+)/
應用:利用正則表達式匹配IP地址,並將IP地址轉換成對應數值的Javascript程序:
function IP2V(ip){
re=/(d+).(d+).(d+).(d+)/g;
if(re.test(ip)){
return RegExp.$1*Math.pow(255,3))+
RegExp.$2*Math.pow(255,2))+
RegExp.$3*255+RegExp.$4*1;
}
else{
throw new Error("Not a valid IP address!");
}
}
其實直接用split函數來分解可能更簡單,程序如下:
var ip="10.100.20.168";
ip=ip.split(".");
alert("IP值是:"+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1));
28.去除字串中重複的字符的javascript程序
var s="abacabefgeeii";
var s1=s.replace(/(.).*1/g,"$1");
var re=new RegExp("["+s1+"]","g");
var s2=s.replace(re,"");
alert(s1+s2); //結果爲:abcefgi
/*使用後向引用取出包括重複的字符,再以重複的字符建立第二個表達式,取到不重複的字符,
兩者串連。這個方法對於字符順序有要求的字符串可能不適用。*/
29.用正則表達式從URL地址中提取文件名的javascript程序
s="http://www.9499.net/page1.htm";
s=s.replace(/(.*/){0,}([^.]+).*/ig,"$2");
alert(s); //結果爲page1
30.限制表單文本框輸入內容
只能輸入中文:
onkeyup="value=value.replace(/[^u4E00-u9FA5]/g,'')"
onbeforepaste="clipboardData.setData('text',
clipboardData.getData('text').replace(/[^u4E00-u9FA5]/g,''))"
只能輸入全角字符:
onkeyup="value=value.replace(/[^uFF00-uFFFF]/g,'')"
onbeforepaste="clipboardData.setData('text',
clipboardData.getData('text').replace(/[^uFF00-uFFFF]/g,''))"
只能輸入數字:
onkeyup="value=value.replace(/[^d]/g,'')"
onbeforepaste="clipboardData.setData('text',
clipboardData.getData('text').replace(/[^d]/g,''))"
只能輸入數字和英文:
onkeyup="value=value.replace(/[W]/g,'')"
onbeforepaste="clipboardData.setData('text',
clipboardData.getData('text').replace(/[^d]/g,''))"
31.驗證文件名由字母,數字,下滑線組成 /^((w+)(.{1})(w+))$/
32.匹配日期(1900-1999)
/^19d{2}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|(3([0|1])))$/
33.匹配日期(2000-2999)
/^20d{2}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|(3([0|1])))$/
34.匹配日期時間
/^(1|2d{3}-((0[1-9])|(1[0-2]))-((0[1-9])|([1-2][0-9])|(3([0|1]))))( (d{2}):(d{2}):(d{2}))?$/


//校驗是否全由數字組成
var patrn=/^[0-9]{1,20}$/

//校驗登錄名:只能輸入5-20個以字母開頭、可帶數字、“_”、“.”的字串
var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;

//校驗用戶姓名:只能輸入1-30個以字母開頭的字串
var patrn=/^[a-zA-Z]{1,30}$/;

//校驗密碼:只能輸入6-20個字母、數字、下劃線
var patrn=/^(w){6,20}$/;

//校驗普通電話、傳真號碼:可以“+”開頭,除數字外,可含有“-”
var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?(d){1,12})+$/;
var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/;

//校驗手機號碼:必須以數字開頭,除數字外,可含有“-”
var patrn=/^[+]{0,1}(d){1,3}[ ]?([-]?((d)|[ ]){1,12})+$/;

//校驗郵政編碼
var patrn=/^[a-zA-Z0-9]{3,12}$/;

//校驗搜索關鍵字
var patrn=/^[^`~!@#$%^&*()+=|\][]{}:;',.<>/?]{1}[^`~!@$%^&()+=|\] []{}:;',.<>?]{0,19}$/;
var patrn=/^[0-9.]{1,20}$/;

正則表達式
^\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
^[A-Za-z0-9_]*$


網頁驗證的例子:
<SCRIPT language="javascript"><!--
function validate(){
var frm = document.form1;
if ( frm.orgname.value=="" ){
alert("機構名稱必須填寫,請輸入!");
frm.orgname.focus();
return false;
}
if ( frm.orgfunction.value=="" ){
alert("機構職能必須填寫,請輸入!");
frm.orgfunction.focus();
return false;
}
if ( frm.orgpostcode.value=="" ){...}
else{
var pattern=/^d...{6}$/;
if(pattern.test(frm.orgpostcode.value)){...}
else{
alert("輸入的郵政編碼不是合法的格式!");
frm.orgpostcode.focus();
return false;
}
}
if ( frm.orgphone.value=="" ){...}
else{
var str=frm.orgphone.value;
var reg=/(^[0-9]...{3,4}-[0-9]...{3,8}$)|(^[0-9]...{3,8}$)|(^([0-9]...{3,4})[0-9]...{3,8}$)|(^0...{0,1}13[0-9]...{9}$)/;
if (isNaN(str)){
if(reg.test(str)==false){
alert("電話號碼輸入有誤,請重新輸入!");
frm.orgphone.value="";
frm.orgphone.focus();
return false;
}
}
else if(str.length<6){
alert("電話輸入有誤,請重新輸入!");
frm.orgphone.focus();
return false;
}
}
if ( frm.orgfax.value=="" ){...}
else{
var str=frm.orgfax.value;
var reg=/(^[0-9]...{3,4}-[0-9]...{3,8}$)|(^[0-9]...{3,8}$)|(^([0-9]...{3,4})[0-9]...{3,8}$)|(^0...{0,1}13[0-9]...{9}$)/;
if (isNaN(str)){
if(reg.test(str)==false){
alert("傳真輸入有誤,請重新輸入!");
frm.orgfax.value="";
frm.orgfax.focus();
return false;
}
}
else if(str.length<6){
alert("傳真輸入有誤,請重新輸入!");
frm.orgfax.focus();
return false;
}
}
if ( frm.orgemail.value=="" ){...}
else{
var pattern=/^w+((-w+)|(.w+))*@[A-Za-z0-9]+((.|-)[A-Za-z0-9]+)*.[A-Za-z0-9]+$/;
if(pattern.test(frm.orgemail.value)){...}
else{
alert("輸入的電子郵箱不是合法的格式!");
frm.orgemail.focus();
return false;
}
}
if ( frm.orgurl.value=="" ){...}
else{
var pattern=new RegExp("((^http)|(^https)|(^ftp))://(w)+.(w)+");
if(pattern.test(frm.orgurl.value)){...}
else{
alert("輸入的URL不是合法的格式!");
frm.orgurl.focus();
return false;
}
}
}
//--></SCRIPT>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章