在javascript中使用正则表达式对象的两种写法:
语法1: re=/pattern/[flags]
语法2: re=new RegExp("pattern",["flags"]);
flags: 常用标记有g(全文查找出现的所有pattern) ,i(忽略大小写),m(多行查找);
eg: var re=//s/g;
var re=new RegExp("/s","g");
常用正则方法:
str.replace("regExp","str");
regExp.test(str);返回Boolean值.
正则表达式的使用
var email = obj.email.value;
var pattern = //d+///d+/; 表示 3443432/2334342
flag = pattern.test(email);
if(!flag)
{alert("有错误");
obj.email.focus();
return false;
}
else
{return true;}
function trim(str){ //去除首尾空格
var re=/(^/s*)|(/s*$)/g;
str=str.replace(re,"");
return str;
}
function alltrim(str){ //去除全部空格
var re=//s/g;
str=str.replace(re,""); //不是空格的地方全要了
return str;
}
使用
<form name="form1" method="post">
<textarea name="source" cols="40" rows="3" class="wenbenkuang" id="source"></textarea>
<textarea name="result" cols="40" rows="3" class="wenbenkuang" id="result" readonly="readonly"></textarea>
<input name="Button" type="button" class="btn_grey" onClick="form1.result.value=trim(form1.source.value)" value="去除首尾空格" />
<input name="Button2" type="button" class="btn_grey" onClick="form1.result.value=alltrim(form1.source.value)" value="去除全部空格" />
</form>
检查E_Mail是否正确
function check(myform){
if(myform.e_mail.value==""){
alert("请输入Email地址!");myform.e_mail.focus();return;
}
if(!checkemail(myform.e_mail.value)){
alert("您输入Email地址不正确!");myform.e_mail.focus();return;
}
myform.submit();
}
function checkemail(email){
var str=email;
//在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号
var Expression=//w+([-+.']/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*/;
var objExp=new RegExp(Expression);
if(objExp.test(str)==true){
return true;
}else{
return false;
}
}
网址
//在JavaScript中,正则表达式只能使用"/"开头和结束,不能使用双引号
//判断url地址的正则表达式为:http(s)?://([/w-]+/.)+[/w-]+(/[/w- ./?%&=]*)?
//下面的代码中应用了转义字符"/"输出一个字符"/"
var Expression=/http(s)?:////([/w-]+/.)+[/w-]+(//[/w- .//?%&=]*)?/;
身份证
var Expression=//d{17}[/d|X]|/d{15}/;
电话
var Expression=/(/d{3}-)?/d{8}|(/d{4}-)(/d{7})/; // 027-86754543或者0391-3118848
用户名(由3-10位的字母,数字,下划线组成的正则表达式)
var Expression=/^(/w){3,10}$/;
密码(以字母开头,6-20位的字母,数字,下划线和点"."组成的正则表达式)
var Expression=/^[A-Za-z]{1}([A-Za-z0-9]|[._]){5,19}$/;
姓名(汉字)
var Expression=/[^/u4E00-/u9FA5]/;
非数字(数字类型可以是float类型,如23.4)
isNaN
自然数
var Expression=/^[1-9]+(/d*$)/;
验证 Email: String filter=/^([a-z]|[A-Za-z0-9]|[-]|[_][.])([A-Za-z0-9])+@([A-Za-z0-9]|[-])+/..+$/ ;
匹配空白行的正则表达式:/n/s*/r
评注:可以用来删除空白行
匹配HTML标记的正则表达式:<(/S*?)[^>]*>.*?<//1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分, 对于复杂的嵌套标记依旧无能为力
匹配首尾空白字符的正则表达式:^/s*|/s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等), 非常有用的表达式
匹配Email地址的正则表达式:/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*
评注:表单验证时很实用
匹配网址URL的正则表达式:[a-zA-z]+://[^/s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
匹配国内电话号码:/d{3}-/d{8}|/d{4}-/d{7}
评注:匹配形式如 0511-4405222 或 021-8788882
匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
匹配中国邮政编码:[1-9]/d{5}(?!/d)
评注:中国邮政编码为6位数字
匹配身份证:/d{15}|/d{18}
评注:中国的身份证为15位或18位
//* 名 称:DataLength
//* 功 能:计算数据的长度
//* 入口参数:fData:需要计算的数据
//* 出口参数:返回fData的长度(Unicode长度为2,非Unicode长度为1)
//*****************************************************************
function DataLength(fData)
{
var intLength=0
for (var i=0;i<fData.length;i++)
{
if ((fData.charCodeAt(i) < 0) || (fData.charCodeAt(i) > 255))
intLength=intLength+2
else
intLength=intLength+1
}
return intLength
}
//* 名 称:DataLength
//* 功 能:计算数据的长度
//* 入口参数:fData:需要计算的数据
//* 出口参数:返回fData的长度(Unicode长度为2,非Unicode长度为1)
//*****************************************************************
function DataLength(fData)
{
var intLength=0
for (var i=0;i<fData.length;i++)
{
if ((fData.charCodeAt(i) < 0) || (fData.charCodeAt(i) > 255))
intLength=intLength+2
else
intLength=intLength+1
}
return intLength
}
//* 名 称:IsEmpty
//* 功 能:判断是否为空
//* 入口参数:fData:要检查的数据
//* 出口参数:True:空
//* False:非空
//*****************************************************************
function IsEmpty(fData)
{
return ((fData==null) || (fData.length==0) )
}
//****************************************************************
//* 名 称:IsDigit
//* 功 能:判断是否为数字
//* 入口参数:fData:要检查的数据
//* 出口参数:True:是0到9的数字
//* False:不是0到9的数字
//*****************************************************************
function IsDigit(fData)
{
return ((fData>="0") && (fData<="9"))
}
//****************************************************************
//* 名 称:IsInteger
//* 功 能:判断是否为正整数
//* 入口参数:fData:要检查的数据
//* 出口参数:True:是整数,或者数据是空的
//* False:不是整数
//*****************************************************************
function IsInteger(fData)
{
//如果为空,返回true
if (IsEmpty(fData))
return true
if ((isNaN(fData)) || (fData.indexOf(".")!=-1) || (fData.indexOf("-")!=-1))
return false
return true
}
//* 名 称:IsEmail
//* 功 能:判断是否为正确的Email地址
//* 入口参数:fData:要检查的数据
//* 出口参数:True:正确的Email地址,或者空
//* False:错误的Email地址
//*****************************************************************
function IsEmail(fData)
{
if (IsEmpty(fData))
return true
if (fData.indexOf("@")==-1)
return false
var NameList=fData.split("@");
if (NameList.length!=2)
return false
if (NameList[0].length<1 )
return false
if (NameList[1].indexOf(".")<=0)
return false
if (fData.indexOf("@")>fData.indexOf("."))
return false
if (fData.indexOf(".")==fData.length-1)
return false
return true
}
//* 名 称:IsPhone
//* 功 能:判断是否为正确的电话号码(可以含"()"、"()"、"+"、"-"和空格)
//* 入口参数:fData:要检查的数据
//* 出口参数:True:正确的电话号码,或者空
//* False:错误的电话号码
//* 错误信息:
//*****************************************************************
function IsPhone(fData)
{
var str;
var fDatastr="";
if (IsEmpty(fData))
return true
for (var i=0;i<fData.length;i++)
{
str=fData.substring(i,i+1);
if (str!="(" && str!=")" && str!="(" && str!=")" && str!="+" && str!="-" && str!=" ")
fDatastr=fDatastr+str;
}
//alert(fDatastr);
if (isNaN(fDatastr))
return false
return true
}
//* 名 称:IsPlusNumeric
//* 功 能:判断是否为正确的正数(可以含小数部分)
//* 入口参数:fData:要检查的数据
//* 出口参数:True:正确的正数,或者空
//* False:错误的正数
//* 错误信息:
//*****************************************************************
function IsPlusNumeric(fData)
{
if (IsEmpty(fData))
return true
if ((isNaN(fData)) || (fData.indexOf("-")!=-1))
return false
return true
}
//* 名 称:IsNumeric
//* 功 能:判断是否为正确的数字(可以为负数,小数)
//* 入口参数:fData:要检查的数据
//* 出口参数:True:正确的数字,或者空
//* False:错误的数字
//* 错误信息:
//*****************************************************************
function IsNumeric(fData)
{
if (IsEmpty(fData))
return true
if (isNaN(fData))
return false
return true
}
//****************************************************************
//* 名 称:IsIntegerInRange
//* 功 能:判断一个数字是否在指定的范围内
//* 入口参数:fInput:要检查的数据
//* fLower:检查的范围下限,如果没有下限,请用null
//* fHigh:检查的上限,如果没有上限,请用null
//* 出口参数:True:在指定的范围内
//* False:超出指定范围
//*****************************************************************
function IsIntegerInRange(fInput,fLower,fHigh)
{
if (fLower==null)
return (fInput<=fHigh)
else if (fHigh==null)
return (fInput>=fLower)
else
return ((fInput>=fLower) && (fInput<=fHigh))
}