使用正则表达式在Razor页面上验证电子邮件地址

11

嗨,我正在使用 Razor 并尝试使用正则表达式来验证电子邮件地址,下面是验证函数:

function validateEmail(txtEmail){
   var a = document.getElementById(txtEmail).value;
   var filter = /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{0,4}$/;
    if(filter.test(a)){
        return true;
    }
    else{
        return false;
    }
}​

但是由于正则表达式中有@符号,Razor认为它是语法的一部分,并给出了错误。

有没有办法让Razor在JavaScript中忽略@符号呢?

谢谢。


当有人在您的网站上关闭JavaScript时会发生什么? - Doug Chamberlain
请参考Razor视图引擎中转义@字符的方式。另外,您也可以将JavaScript放在单独的文件中。 - oleksii
3个回答

13

Unicode可能像这样工作

string filter = "/^[a-zA-Z0-9_.-]+\\u0440[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{0,4}$/";

在 Razor 中,@@ 是正常的 @ 符号,它应该可以在你的 JavaScript 中工作。

string filter = "/^[a-zA-Z0-9_.-]+@@[a-zA-Z0-9]+[a-zA-Z0-9.-]+[a-zA-Z0-9]+.[a-z]{0,4}$/";

0

你可以试试这个,可能对你有帮助。

function validateEmail(email) { 
    var re = /^[_a-z0-9-A-Z-]+(\.[_a-z0-9-A-Z-]+)*@[a-z0-9-A-Z-]+(\.[a-z0-9-A-Z-]+)*(\.[a-z]{2,4})$/;
    return re.test(email);
} 

0

检查电子邮件格式是否有效是很常见的。要验证电子邮件地址,我们需要使用正则表达式。在MVC Razor中,我们应该使用@@符号来执行验证。 MVC razor:

var emailRegEx = /^(([^<>()[]\.,;:\s@@\"]+(.[^<>()[]\.,;:\s@@\"]+)*)|(\".+\"))@@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;

普通HTML:

对于普通的HTML,我们应该使用@符号来执行验证。

var emailRegEx = /^(([^<>()[]\.,;:\s@\"]+(.[^<>()[]\.,;:\s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;

更多详情请访问


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接