JS正则表达式到Java,语法问题

JS regex to Java, syntax issues

本文关键字:语法 问题 Java 正则表达式 JS      更新时间:2023-09-26

我有一个很大的正则表达式,我在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,}))$/

当我尝试在Java中使用它们时,我会遇到语法错误。

索引154/^附近的未闭合字符类(([^<>()[]''.,;:''s@''"]+(.[^<>()[]''.,;:''s@''"]+)*)|(''".+''"

我正在使用http://www.regexplanet.com/以测试正则表达式。

有什么方法可以转换或转义字符或类似的东西吗?谢谢

这是作为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,}))"

锚点(^$)已被删除,因为在调用matches()时不需要它们。

'"外,所有'都已加倍。

类([])中的[需要转义,因此添加了转义(''[)。

类([])中的.不需要转义,因此已删除转义。

类内的-[])如果放在最后,则不需要转义,因此移动到末尾。

我抓取了一些字符,结果是:

/^
    (
        (
            [^<>()'[']''.,;:'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,})
    )
$/

regexplanet.com:link

问题似乎是有一些[未被屏蔽。

无论如何,我鼓励您看到这个问题:什么是最好的java电子邮件地址验证方法

我与所有最终的regex Java电子邮件地址regex验证器