你如何匹配JavaScript中的正则表达式?

时间:2011-07-04 09:58:23

标签: javascript regex match

我正在尝试将电子邮件正则表达式\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b与Javascript中的字符串进行匹配。目前我正在使用代码email.match(/b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/),但它与任何电子邮件地址都不匹配。在使用Javascript之前是否需要更改正则表达式?

2 个答案:

答案 0 :(得分:5)

将电子邮件地址与正则表达式匹配的问题除外:

您必须添加不区分大小写的修饰符,因为您只匹配大写字符。您也错过了\前面的b(这使得表达式与字面上的b匹配)和最后的\b(感谢@Tomalak )(即使它没有它会“工作”):

email.match(/\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i)

如果您只想知道表达式是否匹配,可以使用.test

patter.test(email)

More about regular expressions in JavaScript

答案 1 :(得分:0)

您应该使用符合RFC 2822的RegEx来验证电子邮件,即使它很重要;

function check_mail(str){
    var reg=new RegExp(/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/i)

  if(str.match(reg)){
    return true;
  }else{
    return false;
  }
}

有关使用RegEx验证电子邮件的详细信息,请参阅regular-expression.info