我试验过的
<script language="javascript">
//验证用户名
function ThisName(username)
{
if(username.replace(/(^\s*)|(\s*$)/g, "").length<3)
{
alert("提示:请输入用户名,有效长度最少为3位");
form1.userName.value=" ";
return false;
}
return true;
}
//验证用户输入固定电话
function ThisPhone1(phone1)
{
var str=phone1.value;
if(str.length!=0)
{
if(!str.match(/^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/))
{
alert("提示:请输正确格式的电话号码。");
phone1.value="";
return false;
}
}
return true;
}
//验证用户输入的手机号码是否有误
function ThisPhone2(phone2)
{
var str=phone2.value;
if(!(/^1[3|5][0-9]\d{4,8}$/.test(str)))
{
if(!(/^0(([1,2]\d)|([3-9]\d{2}))\d{8}$/.test(str)))
{
alert("提示:请输正确格式的手机号码。");
phone2.value="";
return false;
}
}
return true;
}
//验证用户输入的收货地址
function ThisAddress(address)
{
var str=address.value;
var patm=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;
if(!patm.exec(str))
{
alert("提示:请不要输入非法字符");
address.value="";
return false;
}
return true;
}
//验证用户输入的邮政编码
function ThisPostOffice(postOffice)
{
var str=postOffice.value;
if(!(/^[a-zA-Z0-9 ]{3,12}$/.exec(str)))
{
alert("提示:请输正确格式的邮政编码.");
postOffice.value="";
return false;
}
return true;
}
//验证用户输入的留言
function ThisLeaveWord(leaveWord)
{
var str=leaveWord.value;
var patm=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;
if(!patm.exec(str))
{
alert("提示:请不要输入非法字符");
leaveWord.value="";
return false;
}
return true;
}
*****************************************************************
下面是没有试验的
1.快速入门
判断邮件地址的正则表达式
var re=/\w+@\w+\.\d+/;
vartestStr="####@126.com";
if ( testStr.match(re)){
alert("匹配!");
}else{
alert("不匹配!");
}
2.正则表达式常用元字符介绍
先看看 /\w+@\w+\.\w+/
/ / 两个反斜杠之间的内容,就是正则表达式
\w 表示包括下划线在内的所有字母,数字
+ 表示位数在一位以上
\w+ 合起来就是 包括下划线在内的字母,数字,并且位数在一位以上
\. 转义字符,就是"."
@ 当然,这就是@符号了
上面的正则表达式,意思就是 :一个以上的字符 加上@符号加上 一个以上的字符 加上 "."符号加上一个以上的字符
其他常用元字符
* 0个或者多个
+ 1个或者多个
? 0个或者1个
^ 开始字符
$ 结束字符
\d 数字
\w 包括下划线在内的字母,数字
{n,m} n位到m位 ,比如 \d{2,8} 就是2位到8位数字
{n,} n位以上
x|y 匹配x或者y 比如 a|b ,那么a,或者b,都是可以的
[abc] 只能是a,b,c三个中的一个
[a-z] 只能是a到z之间的一个
3 .容易忽略的问题
题目: 写正则表达式,判断格式 2007 四位数字
答案一: /\d{4}/
问题:如果输入A2007B,那么还是符合答案一的正则表达式
答案二 /^\d{4}$/
答案二,加上了开始元字符^,结束元字符$,现在输入A2008B,就不符号格式了
匹配中文字符的正则表达式:[\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s|]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?
用正则表达式限制只能输入中文:οnkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正则表达式限制只能输入全角字符:οnkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正则表达式限制只能输入数字:οnkeyup="value=value.replace(/[^\d]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正则表达式限制只能输入数字和英文:οnkeyup="value=value.replace(/[\W]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
检验是不是IP
function isIP(s) //by zergling
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}
利用正则表达式分解和转换IP地址:
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:
function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
returnRegExp.$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))
去除字符串的前后空格:
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
计算字符串的长度:(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"aa").length;}
得用正则表达式从URL地址中提取文件名:
s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)
校验是否全由数字组成:
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false
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)
{
varpatrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}
//手机验证号码
function checkMobile(){
var sMobile = document.mobileform.mobile.value
if(!(/^1[3|5][0-9]\d{4,8}$/.test(sMobile))){
alert("不是完整的11位手机号或者正确的手机号前七位");
document.mobileform.mobile.focus();
return false;
}
}
<script LANGUAGE="javascript">
//匹配固定电话或小灵通,例如:031185907468或02185907468格式
function isphone1(){
var num = document.getElementById('ph').value;
var partten = /^0(([1,2]\d)|([3-9]\d{2}))\d{8}$/;
if(partten.test(num)){
alert('是电话号码');
}else{
alert('不是电话号码');
}
}
function isphone2(){
var num = document.getElementById('mb').value;
var partten = /^1[3,5]\d{9}$/;
if(partten.test(num)){
alert('是手机号码');
}else{
alert('不是手机号码');
}
}
</script>
<script language="javascript">
//验证用户名
function ThisName(username)
{
if(username.replace(/(^\s*)|(\s*$)/g, "").length<3)
{
alert("提示:请输入用户名,有效长度最少为3位");
form1.userName.value=" ";
return false;
}
return true;
}
//验证用户输入固定电话
function ThisPhone1(phone1)
{
var str=phone1.value;
if(str.length!=0)
{
if(!str.match(/^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/))
{
alert("提示:请输正确格式的电话号码。");
phone1.value="";
return false;
}
}
return true;
}
//验证用户输入的手机号码是否有误
function ThisPhone2(phone2)
{
var str=phone2.value;
if(!(/^1[3|5][0-9]\d{4,8}$/.test(str)))
{
if(!(/^0(([1,2]\d)|([3-9]\d{2}))\d{8}$/.test(str)))
{
alert("提示:请输正确格式的手机号码。");
phone2.value="";
return false;
}
}
return true;
}
//验证用户输入的收货地址
function ThisAddress(address)
{
var str=address.value;
var patm=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;
if(!patm.exec(str))
{
alert("提示:请不要输入非法字符");
address.value="";
return false;
}
return true;
}
//验证用户输入的邮政编码
function ThisPostOffice(postOffice)
{
var str=postOffice.value;
if(!(/^[a-zA-Z0-9 ]{3,12}$/.exec(str)))
{
alert("提示:请输正确格式的邮政编码.");
postOffice.value="";
return false;
}
return true;
}
//验证用户输入的留言
function ThisLeaveWord(leaveWord)
{
var str=leaveWord.value;
var patm=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;
if(!patm.exec(str))
{
alert("提示:请不要输入非法字符");
leaveWord.value="";
return false;
}
return true;
}
*****************************************************************
下面是没有试验的
1.快速入门
判断邮件地址的正则表达式
var re=/\w+@\w+\.\d+/;
vartestStr="####@126.com";
if ( testStr.match(re)){
alert("匹配!");
}else{
alert("不匹配!");
}
2.正则表达式常用元字符介绍
先看看 /\w+@\w+\.\w+/
/ / 两个反斜杠之间的内容,就是正则表达式
\w 表示包括下划线在内的所有字母,数字
+ 表示位数在一位以上
\w+ 合起来就是 包括下划线在内的字母,数字,并且位数在一位以上
\. 转义字符,就是"."
@ 当然,这就是@符号了
上面的正则表达式,意思就是 :一个以上的字符 加上@符号加上 一个以上的字符 加上 "."符号加上一个以上的字符
其他常用元字符
* 0个或者多个
+ 1个或者多个
? 0个或者1个
^ 开始字符
$ 结束字符
\d 数字
\w 包括下划线在内的字母,数字
{n,m} n位到m位 ,比如 \d{2,8} 就是2位到8位数字
{n,} n位以上
x|y 匹配x或者y 比如 a|b ,那么a,或者b,都是可以的
[abc] 只能是a,b,c三个中的一个
[a-z] 只能是a到z之间的一个
3 .容易忽略的问题
题目: 写正则表达式,判断格式 2007 四位数字
答案一: /\d{4}/
问题:如果输入A2007B,那么还是符合答案一的正则表达式
答案二 /^\d{4}$/
答案二,加上了开始元字符^,结束元字符$,现在输入A2008B,就不符号格式了
匹配中文字符的正则表达式:[\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s|]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*)\/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?
用正则表达式限制只能输入中文:οnkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,''))"
用正则表达式限制只能输入全角字符:οnkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,''))"
用正则表达式限制只能输入数字:οnkeyup="value=value.replace(/[^\d]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
用正则表达式限制只能输入数字和英文:οnkeyup="value=value.replace(/[\W]/g,'')"onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))"
检验是不是IP
function isIP(s) //by zergling
{
var patrn=/^[0-9.]{1,20}$/;
if (!patrn.exec(s)) return false
return true
}
利用正则表达式分解和转换IP地址:
下面是利用正则表达式匹配IP地址,并将IP地址转换成对应数值的Javascript程序:
function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //匹配IP地址的正则表达式
if(re.test(ip))
{
returnRegExp.$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))
去除字符串的前后空格:
String.prototype.trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}
计算字符串的长度:(一个双字节字符长度计2,ASCII字符计1)
String.prototype.len=function(){returnthis.replace([^\x00-\xff]/g,"aa").length;}
得用正则表达式从URL地址中提取文件名:
s="http://www.9499.net/page1.htm"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")
alert(s)
校验是否全由数字组成:
function isDigit(s)
{
var patrn=/^[0-9]{1,20}$/;
if (!patrn.exec(s)) return false
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)
{
varpatrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;
if (!patrn.exec(s)) return false
return true
}
//手机验证号码
function checkMobile(){
var sMobile = document.mobileform.mobile.value
if(!(/^1[3|5][0-9]\d{4,8}$/.test(sMobile))){
alert("不是完整的11位手机号或者正确的手机号前七位");
document.mobileform.mobile.focus();
return false;
}
}
<script LANGUAGE="javascript">
//匹配固定电话或小灵通,例如:031185907468或02185907468格式
function isphone1(){
var num = document.getElementById('ph').value;
var partten = /^0(([1,2]\d)|([3-9]\d{2}))\d{8}$/;
if(partten.test(num)){
alert('是电话号码');
}else{
alert('不是电话号码');
}
}
function isphone2(){
var num = document.getElementById('mb').value;
var partten = /^1[3,5]\d{9}$/;
if(partten.test(num)){
alert('是手机号码');
}else{
alert('不是手机号码');
}
}
</script>