Javascript JS正则表达式到Java,语法问题
我在JavaScript中使用这个大正则表达式来验证电子邮件地址Javascript JS正则表达式到Java,语法问题,javascript,java,regex,Javascript,Java,Regex,我在JavaScript中使用这个大正则表达式来验证电子邮件地址 /^(([^<>()[\]\\.,;:\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,}))$/ /([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\[
/^(([^<>()[\]\\.,;:\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,}))$/
/([^()[\]\\,;:\s@\“]+(\.[^()[\]\,;:\s@\“]+)*)(\[[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[1,3}.[0-9]{1,3}.]$/
当我尝试在Java中使用它们时,会出现语法错误
索引154/^([^()[]\,;:\s@\“]+([^()[]\,:\s@\“]+)*)([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])124;([a-zA Z-0-9]++.[a-zA Z-Z]{2,}$/^
我用它来测试正则表达式
有没有什么方法可以转换或摆脱字符或类似的东西?谢谢 我替换了一些字符,结果是:
/^
(
(
[^<>()\[\]\\.,;:\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,})
)
$/
/^
(
(
[^()\[\]\\,;:\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,})
)
$/
似乎问题在于有一些[
未被替换
无论如何,我鼓励您看到这个问题:这是作为Java字符串文本的JS正则表达式:
"(([^<>()\\[\\].,;:\\s@\"]+(\\.[^<>()\\[\\].,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\])|(([a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,}))"
([^()\[\\],;:\\s@\\\]+(\\.[^()\[\\],:\\\\[\\]+)*)(\“+”)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}.[0-9]{1,3}\\\\\.[0-9]{1,3}.[1,3}\\\\\\]+]124;([a-zA Z0 9-]++]
锚(^$
)已被删除,因为调用匹配()
时不需要锚
所有的\
,除了\“
,都翻了一倍
类([
)中的[
)需要转义,因此添加了转义(\\[
)
类([]
)中的
不需要转义,因此转义被删除
-
在类中([]
)如果放在最后,则不需要转义,因此移动到末尾。我与所有最终正则表达式共享您确实知道很难让正则表达式验证电子邮件(根据RFC 822),对吗?。请参阅此处的讨论:尝试使用输入类型=“电子邮件”“
?@guest271314仍然需要服务器端验证。@guest271314如果web表单是向服务器发送数据的唯一方式,当然。但事实并非如此,而且相信它是唯一的方式会让您面临最琐碎的攻击。@guest271314同时使用客户端验证(用于即时、高级反馈)和服务器端验证,以保护您的数据。