我有这个 JS 风格的正则表达式
^[\w.-]+(?:\.[\w\.-]+)+[\w\-\._~:/?#[\]@!\$&'\(\)\*\+,;=.]+$
我在 JS 中尝试过,它对我有用(只想匹配不以 HTTP/HTTPS 协议开头的 URL): https ://regex101.com/r/6y2Gnd/2
现在我想在我的 Java 后端使用相同的正则表达式。起初我得到了错误
未封闭的字符类
读完后,我意识到我必须逃避\斜线。我基本上\\\在每个\斜杠上加了三个。结果是:
^[\\\\w.-]+(?:\\\\.[\\\\w\\\\.-]+)+[\\\\w\\\\-\\\\._~:/?#[\\\\]@!\\\\$&'\\\\(\\\\)\\\\*\\\\+,;=.]+$
尽管编译器不再显示任何错误,但结果是空的,即它无法像在 JS 风格中那样匹配案例。
我在这里和我的代码中测试了 Java 正则表达式。
www.web.de # I want to match this
web.de # I want to match this
http://web.de # I do NOT want to match this
https://www.web.de # I do NOT want to match this
有人知道我错过了什么吗?