JS regex到Java,语法问题

时间:2015-11-26 18:11:59

标签: 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,}))$/

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

  

索引附近的未闭合字符类154 / ^(([^&lt;&gt;()[] \。,;:\ s @ \&#34;] +(。[^&lt;&gt;()[] \;:\ S @ \&#34;] +)*)|(\&#34 + \&#34))@(([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,}))$ / ^

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

有没有办法转换或转义字符或类似的东西?谢谢!

3 个答案:

答案 0 :(得分:1)

我翻了一些字符,结果就是这样:

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

似乎问题是有一些[没有转义。

无论如何,我鼓励你看到这个问题:What-is-the-best-java-email-address-validation-method

答案 1 :(得分:1)

这是JS正则表达式作为Java字符串文字:

"(([^<>()\\[\\].,;:\\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()时不需要它们。

\以外的所有\"都加倍了。

一个类([)内的

[]需要转义,因此添加了转义(\\[)。

一个类(.)内的

[]不需要转义,因此删除了转义。

一个类(-)内的

[]如果放在最后,则不需要转义,所以移动到结束。

答案 2 :(得分:0)

我与所有最终正则表达式Java email address regex validator

分享