Javascript 无法将unicode标志添加到正则表达式以进行电子邮件检查
我有以下正则表达式字符串来检查有效的电子邮件格式Javascript 无法将unicode标志添加到正则表达式以进行电子邮件检查,javascript,regex,Javascript,Regex,我有以下正则表达式字符串来检查有效的电子邮件格式 /^(([^<>()[\]\\.,;:\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,}))$/ 然而,我得到一个错误,说正则表达式在unicode标志下变得无效。是否可以在此处设置此标志?有多种解决方案可用于验证uni
/^(([^<>()[\]\\.,;:\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,}))$/
然而,我得到一个错误,说正则表达式在unicode标志下变得无效。是否可以在此处设置此标志?有多种解决方案可用于验证unicode字符,但此标志不能这样使用。
\u
标志后面通常跟一个字符代码,如\u00C0
我认为最可靠的解决方案是在正则表达式中指定可接受的unicode字符的范围
像这样的方法应该会奏效:
/^(?!\.)((?!.*\.{2})[a-zA-Z0-9\u00E0-\u00FC.!#$%&'*+-/=?^_`{|}~\-\d]+)@(?!\.)([a-zA-Z0-9\u00E0-\u00FC\-\.\d]+)((\.([a-zA-Z]){2,63})+)$/
这里所应用的解决方案是支持从a到u的字符
正则表达式测试器:
对unicode字符进行匹配的相关问题:为什么要添加
u
标志?错误的原因是转义的连字符。您不需要在此处添加u
修饰符。您可以使用中所述的“官方”正则表达式,也可以使用类似/\S+@\S+/
的简单方法进行测试,然后向给定地址发送验证邮件。这是测试邮件地址是否有效(以及它是否确实存在)的唯一可靠方法。
/^(?!\.)((?!.*\.{2})[a-zA-Z0-9\u00E0-\u00FC.!#$%&'*+-/=?^_`{|}~\-\d]+)@(?!\.)([a-zA-Z0-9\u00E0-\u00FC\-\.\d]+)((\.([a-zA-Z]){2,63})+)$/