1

您好,我在 Javascript 中有这个正则表达式:

var urlregex = new RegExp("((www.)(([a-zA-Z0-9-]){2,}\.){1,4}([a-zA-Z]){2,6}(\/([a-zA-Z-_\/\.0-9#:?=&;,]*)?)?)");

当我尝试将它放在 Java 字符串上时,我遇到了这个错误:

Description Resource    Path    Location    Type
Invalid escape sequence (valid ones are  \b  \t  \n  \f  \r  \"  \'  \\ )   CreateActivity.java /SupLink/src/com/supinfo/suplink/activities line 43 Java Problem

所以我只想知道我必须改变什么才能在Java中渲染它才能做到这一点(这个函数运行良好):

private boolean IsMatch(String s, String pattern) 
    {
        try {
            Pattern patt = Pattern.compile(pattern);
            Matcher matcher = patt.matcher(s);
            return matcher.matches();
        } catch (PatternSyntaxException e){
            return false;
        }
}       

编辑 :

谢谢你的帮助,现在我有了这个:

private String regex = "((www.)(([a-zA-Z0-9-]){2,}\\.){1,4}([a-zA-Z]){2,6}(\\/([a-zA-Z-_\\/\\.0-9#:?=&;,]*)?)?)";

但我不符合我真正想要的(正则表达式很糟糕^^),我想匹配这些类型的网址:

  • www.something.com
  • 某事.com
  • something.com/anotherthing/anything

你能再帮我一次吗?

真的感谢

4

3 回答 3

3

创建 Java 字符串时,需要再次转义反斜杠,以便 Java 理解它们是文字反斜杠。您可以将所有现有的反斜杠替换为\\. 您还需要转义通常需要转义的任何 Java 字符。

于 2013-04-09T18:51:31.677 回答
0

你应该转义\

像这样的东西

"((www.)(([a-zA-Z0-9-]){2,}\\.){1,4}([a-zA-Z]){2,6}(\\/([a-zA-Z-_\\/\\.0-9#:?=&;,]*)?)?)"
于 2013-04-09T18:52:06.137 回答
0

目前,您的正则表达式www在开始时需要。如果你想让它成为可选的?,在(www.). 此外,您可能想.www部分后逃脱。你的正则表达式应该看起来像。

"((www\\.)?(([a-zA-Z0-9-]){2,}\\.){1,4}([a-zA-Z]){2,6}(\\/([a-zA-Z-_\\/\\.0-9#:?=&;,]*)?)?)"
于 2013-04-09T19:54:48.697 回答