我试图使用jQuery中的Regex来验证一个电子邮件输入--只针对以下条件。
我想允许的输入。
我想防止的输入。
到目前为止,我想出了下面的方法,但我在排除两个符号的组合和限制@符号只能是一个符号方面遇到了问题。
谁能告诉我怎么做才对?
注意:我只是在寻找基本的验证方法。 我只想找一个基本的验证方式,只对英文字母进行验证(其他的我都用jQuery覆盖)。
我的Regex。
var val = $(this).val();
var checkEmail = /(?!^[@.-])(?!.*@@)(?!.*\.\.)(?!.*--)(?!.*[@.-]$)[0-9a-z@\.\-]/g;
if(val.match(checkEmail) {
console.log('input valid');
} else {
console.log('input invalid');
}
非常感谢,Tom
你可以使用下面的regex来实现你的结果。
^(?!.+?(?:\.-|\.\.|--|-@|\.@|@\.).+?)[^.-@ ][a-z0-9_.-]+@[a-z0-9_.-]+(?<=[^.-@ ])$
以上regex的解释:
^, $
- 代表测试字符串的开始和结束,也代表测试字符串的开始和结束。
(?!.+?(?:\.-|\.\.|--|-@|\.@|@\.).+?)
- 代表 瞻前顾后 如果测试字符串包含连续的.-
,..
,--
,-@
,.@
或@.
.
[^.-@ ]
- 如果字符串的开头是以下任何一项,则表示负匹配.-@
.
[a-z0-9_.-]+@[a-z0-9_.-]+
- 代表字符集,其中字符串包含上述字符中的任何内容,只有一个"..."。@
符号。
(?<=[^.-@ ])
- 表示正向的lookbehind,它匹配任何不以.-@
.
你可以找到上述regex的演示。这里。
在JAVASCRIPT(JQUERY)中实现。
var val = "[email protected]";
var checkEmail = /^(?!.+?(?:\.-|\.\.|--|-@|\.@|@\.).+?)[^.-@ ][a-z0-9_.-]+@[a-z0-9_.-]+(?<=[^.-@ ])$/gm;
if (val.match(checkEmail)) {
console.log('input valid');
} else {
console.log('input invalid');
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>