【问题标题】:XRegExp for email address用于电子邮件地址的 XRegExp
【发布时间】:2016-09-02 07:16:38
【问题描述】:

我想为所有包括非斜体字符的电子邮件地址编写正则表达式。

我试过了,结果是假的

请尽快提供正确的解决方案

 <!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/xregexp/3.1.1/xregexp-all.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script type="text/javascript">
	var em = XRegExp('^([\\p{L}+|\\p{N}*][@][\\p{L}+][.][\\p{L}+])$'); // Please help me to correct it
	jQuery(function(){
		jQuery('input').blur(function(){
			console.log(jQuery(this).val());
			console.log(em.test(jQuery('#t1').val()));
			
		});
	});
	
</script>
	<title></title>
</head>
<body>
Enter Name: <input type="text" name="t1" id="t1" class="kcd">
</body>
</html>

【问题讨论】:

  • 非斜体字符?
  • &lt;input type="email" /&gt;
  • 可能是非意大利字母?由于字符类的错误使用,正则表达式显然搞砸了。必须是 XRegExp('^[\\p{L}\\p{N}]+@\\p{L}+[.]\\p{L}+$')
  • 问题与 jQuery Validate 插件无关。编辑标签。

标签: javascript regex validation xregexp


【解决方案1】:

虽然有更好的方法可以确保您的电子邮件正则表达式有效(请参阅@Tusharcomment),但我想解释一下您的正则表达式存在什么问题。

^([\\p{L}+|\\p{N}*][@][\\p{L}+][.][\\p{L}+])$ 包含格式不正确的字符类 [\\p{L}+|\\p{N}*][\\p{L}+]。它们匹配其中定义的单个字符 - [\\p{L}+|\\p{N}*] 匹配 p{L 等,[\\p{L}+] 匹配 p{L、@987654334 @,或+

如果您打算使用您的方法,您可能希望将正则表达式修复为

XRegExp('^[\\p{L}\\p{N}]+@\\p{L}+[.]\\p{L}+$')

详情

  • ^ - 字符串开头
  • [\\p{L}\\p{N}]+ - 一个或多个 Unicode 字母或数字
  • @ - “at”符号
  • \\p{L}+ - 一个或多个 Unicode 字母
  • [.] - 文字点
  • \\p{L}+ - 同上。
  • $ - 字符串结束。

【讨论】:

    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 2017-07-23
    • 2011-12-09
    • 1970-01-01
    相关资源
    最近更新 更多