如何在javascript中匹配正则表达式?

如何在javascript中匹配正则表达式?,javascript,regex,match,Javascript,Regex,Match,我正在尝试将电子邮件正则表达式\b[A-Z0-9.\uz0%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b与Javascript中的字符串匹配。目前我正在使用代码email.match(/b[A-Z0-9.\uz0%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}/),但它与任何电子邮件地址都不匹配。在Javascript中使用正则表达式之前是否需要更改它们?将电子邮件地址与正则表达式匹配的问题放在一边: 您必须添加不区分大小写的修饰符,因为您只匹配大写字符。您还缺少\前面

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

将电子邮件地址与正则表达式匹配的问题放在一边:

您必须添加不区分大小写的修饰符,因为您只匹配大写字符。您还缺少
\
前面的
\
(这使得表达式与a
b
字面上匹配)和结尾的
\b
(谢谢)(即使没有它也可以“工作”):

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

patter.test(email)

.

您应该使用符合RFC 2822的正则表达式来验证电子邮件,即使是大的

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;
  }
}

有关使用正则表达式验证电子邮件的更多详细信息,请参见

TLD不限于其中包含2-4个字母……就此而言,您能否向我们展示您的实际代码,而不仅仅是正则表达式?(顺便说一句,使用正则表达式验证电子邮件地址通常被认为是一个坏主意,因为它实际上是)@Flimzy-同意。我只是检查“@”是否存在,作为一种基本的理智检查:我不确定第一个“b”是否存在?你真的只想要以“b”开头的电子邮件地址吗?以及结尾的
\b
。我认为OP在添加分隔符时产生了误解。似乎是正则表达式的源,是的,它不区分大小写,两端都有一个
\b
。优秀的文章。不,不,我谦虚地不同意。存在不符合RFC的真实地址。另外,你也不知道一个有效的格式是否是一封真正的电子邮件,所以重点是什么。只需检查“@”字符作为基本的健全性检查,就更容易维护。事实上,这完全取决于你在寻找什么:测试真正的电子邮件意味着将邮件发送到地址。如果需要快速测试,可以将格式测试限制为“@”。我把我的解决方案当作一个普通的解决方案。
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;
  }
}