JavaScript 我非常简单的正则表达式有什么问题
javascript whats wrong with my very simple regex?
我想以 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"等:)
编辑2 精算代码:
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');
}
编辑3 *发现问题!* 这不是正则表达式本身,而是我将正则表达式传递给正则表达式函数的方式......它应该是
new RegExp(/^.+@.+'..{2,8}$/);
不是
new RegExp("^.+@.+'..{2,8}$");
正如我所说,整个正则表达式的事情对我来说是很新的:))
实际上,真实电子邮件地址的正则表达式并不简单,因为它应该符合 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 发布的正则表达式。
不是 Javascript 专家,但根据您对any_symbols@any_symbols.two_to_eight_symbols
的定义,我认为这可以工作:
^[^@]+@[^.]+'..{2,8}$
您需要转义斜杠:
'any_symbols@four_symbols'.match('^.+@.+''..{2,8}$');
^^
否则,JavaScript 会将'.
读取为未知转义序列并忽略斜杠:
对于未列出的字符 [...] 前面的反斜杠是 忽略,但此用法已弃用,应避免使用。
(该死的,这很难发现...
- 我不知道我的编码有什么问题.(JavaScript)
- 我的流星路线出了什么问题
- 此nodeValue替换代码有什么问题
- 这个正则表达式的日期/时间有什么问题
- 我的CSS/Javascript下拉菜单测试代码出了什么问题
- 这个代码出了什么问题?(Jquery)
- 下面的Reg表达式出了什么问题
- 鼠标事件,我的代码出了什么问题
- 这个javascript语法有什么问题
- 动态创建foreignGroup并将其添加到svg中有什么问题
- 此代码中动态生成选择框有什么问题
- 我的javascript有什么问题?.className
- 这个 ajax.js 代码有什么问题
- JS代码有什么问题,让我知道代码是否可以改进
- 我的 Browserify JavaScript 代码有什么问题
- 图像上传功能将++(+1)副本添加到下一次上传.出了什么问题或如何重置“选定图像”
- 使用 Javascript 动态删除行.我的代码有什么问题
- AngularJS:这个注入我的控制器有什么问题
- 这个jQuery if语句有什么问题
- JavaScript:有人能告诉我我的代码出了什么问题吗?