我想以html格式验证电子邮件地址。我对正则表达式知之甚少。
验证非常简单,只是为了匹配any_symbols@any_symbols.two_to_eight_symbols
模式。
这是正在尝试使用^.+@.+\..{2,8}$
的正则表达式。然而它不起作用,它验证了模式any_symbols@four_symbols
。
注意:不要担心这种简单的验证,在服务器端我正在做filter_var
(php)并将令牌发送到该电子邮件。当输入的电子邮件地址符合某种理智模式时,只需要在表单上启用按钮:)
编辑那些模式“any_symbols ...”我提到的只是文字表示我想要输入的内容。这不是我在输入字段中键入的内容:)通常我输入“test@test.com”或“blabla@hehe.haha”等等。)
EDIT2 Actuall代码:
var email_regex = new RegExp("^.+@.+\..{2,8}$");
if ($target.val().match(email_regex) !== null){
$button.removeAttr('disabled').removeClass('disabled');
}
else{
$button.attr('disabled', 'disabled').addClass('disabled');
}
EDIT3 * 发现了问题! *这不是正则表达式本身,它是我如何将正则表达式传递给Regex函数...它应该是
new RegExp(/^.+@.+\..{2,8}$/);
不是
new RegExp("^.+@.+\..{2,8}$");
正如我所说,整个正则表达式对我来说都是新鲜事:))
答案 0 :(得分:1)
不是Javascript专家,但根据您对any_symbols@any_symbols.two_to_eight_symbols
的定义,我认为这可行:
^[^@]+@[^.]+\..{2,8}$
答案 1 :(得分:1)
真正的电子邮件地址的正则表达式并不是很简单,因为它应该符合RFC标准。
但是,如果这对您有用,我已经毫无问题地使用了它:
// The regex: /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/
// To test it:
var regex = new RegExp(/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/);
if( regex.test( your_string ) ){ ... } // returns true if valid
如果你真的需要接受任何符号,你可以使用Birei发布的正则表达式。
答案 2 :(得分:1)
你需要逃避斜线:
'any_symbols@four_symbols'.match('^.+@.+\\..{2,8}$');
^^
否则,JavaScript会将\.
读作未知转义序列并ignores the slash:
对于未列出的字符,前面的反斜杠是 忽略了,但这种用法已被弃用,应该避免使用。
(该死的,这很难发现......)