Java过滤网址的字符串?

时间:2014-01-21 20:44:20

标签: java regex

我正在使用Twitch.tv的IRC-Bot

我刚遇到一个问题。

我想过滤一个URL的字符串,然后超时在聊天中写入URL的用户。 在Google上搜索我发现我应该使用正则表达式,但我不明白该怎么做。

从另一个问题开始,我发现要使用的正则表达式是

"[a-zA-Z\d]+://(\w+:\w+@)?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?"

some1可以给我一些关于如何使用正则表达式过滤未知URL的字符串的示例吗?

应该检测出类似的东西;

http://www.google.com
www.google.com
google.com

任何帮助都是对我不好的英语= p

抱怨

2 个答案:

答案 0 :(得分:0)

你可以这样做:

String regex = "([a-zA-Z\d]+://)?(\w+:\w+@)?([a-zA-Z\d.-]+\.[A-Za-z]{2,4})(:\d+)?(/.*)?"; 
Pattern p = Pattern.compile(regex);

// measuredString是人写的消息,您要检查URL模式

   Matcher m = p.matcher(testedString);
   if (m.find()) {
      // timout the user who inserted the URL
   }

顺便说一下,使用正则表达式检测String的更多示例是here

此外,我改进了您的网址格式,现在它将识别所有常规网址字符串

答案 1 :(得分:0)

您包含的正则表达式仅匹配非常详细的URL。开头:

[a-zA-Z\d]+://

匹配一个或多个(即+)大写或小写字母或数字(括号中的部分),后跟“://”。也就是说,它匹配以“http://”或“ftp://”开头的URL或其他内容。如果字符串没有以该字符串开头,则它将不匹配。

在一般情况下匹配网址很棘手。你不能真正区分一个字符串,如“为了很好的交易去 - > dealz.biz”和“哈哈,这很有趣。你自己想出来的吗?”我认为尝试基于URL进行自动禁止是一个坏主意。