正则表达式不会检查是否有空格

时间:2016-02-27 20:07:35

标签: java regex whitespace

我有这个正则表达式代码:

match [a-zA-Z0-9\-\.]+\s?(\.|dot|\(dot\)|-|;|:|,)\s?(com|org|net|cz|co|uk|sk|biz|mobi|xxx|eu|me|io|lt)\b

当有人像这样宣传他们自己的服务器时:

m c . s e r v e r . c o m

它绕过并将此消息发送给服务器。

那么,如何解决这个问题呢?先感谢您! :)

1 个答案:

答案 0 :(得分:0)

我已经做了一个解决方法,您可以使用它来首先按照正则表达式的方式设置文本格式。我可能会错过某些情况,如果是这种情况,只需添加评论解释,我会尝试覆盖它。

这就是我所做的:

public static void findAd(String text){
    text = text.replaceAll("\\b(\\w) (?!\\w{2,})", "$1");
    text = text.replaceAll("(\\w+)(?:\\. )", "$1.");
    text = text.replaceAll("(\\w+)(?: dot )", "$1.");
    return text;
}

因此,当您将此方法称为:

System.out.println( findAd("bla bla bla bla m c . s e r v e r . c o m bla bla bla") );
System.out.println( findAd("m c . s e r v e r . c o m bla bla bla") );
System.out.println( findAd("bla bla bla m c . s e r v e r . c o m") );
System.out.println( findAd("m c . s e r v e r . c o m") );
System.out.println( findAd("m c dot s e r v e r dot c o m") );
System.out.println( findAd("bla bla bla m c dot s e r v e r dot c o m bla") );

您将获得输出:

bla bla bla bla mc.server.com bla bla bla
mc.server.com bla bla bla
bla bla bla mc.server.com
mc.server.com
mc.server.com
bla bla bla mc.server.com bla

然后用你的测试调用你的表达式:

if (yourMethodThatCheckForAd(find(text))) ...

或者只是将我提供的代码添加到您现有的方法中 :)