正则表达式的使用

在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))
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值