Java模式和匹配器在应用程序中工作,但不在Web服务中工作

时间:2017-04-12 11:05:38

标签: java design-patterns matcher

我有一个java正则表达式(用于验证电子邮件地址,虽然这不是我的问题所在),它在标准的Java应用程序中工作,但是当我将相同的代码放入一个宁静的Web服务时,它不再有效。应用程序中的代码如下所示:

public static void main(String[] args) {
    List <String> emails = new ArrayList();
    emails.add("user@domain.com");
    emails.add("user@domain.co.in");

    //Invalid emails
    emails.add(".username@yahoo.com");
    emails.add("username@yahoo.com.");

    String regex = "^[\\w!#$%&'*+/=?`{|}~^-]+(?:\\.[\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\.)+[a-zA-Z]{2,6}$";

    Pattern pattern = Pattern.compile(regex);

    for(String email : emails){
        Matcher matcher = pattern.matcher(email);
        System.out.println(email +" : "+ matcher.matches());
    }
}

此示例已从here

无耻地复制

这实际上适用于我的目的。但是,当我尝试将相同的模式和匹配器包含到Web服务中时,我总是得到一个错误的匹配。我的尝试如下:

@GET
@Path("/{i}")
@Produces(MediaType.APPLICATION_JSON)
public Response getData( @PathParam("i") String eMailAddress_ ) {
    String returnStr;

    String regex = "^[\\\\w!#$%&'*+/=?`{|}~^-]+(?:\\\\.[\\\\w!#$%&'*+/=?`{|}~^-]+)*@(?:[a-zA-Z0-9-]+\\\\.)+[a-zA-Z]{2,6}$";
    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(eMailAddress_);

    if (matcher.matches()) {
        returnStr = eMailAddress_ + " is VALID";
    }
    else {
        returnStr = eMailAddress_ + " is INVALID";
    }

    return Response.ok("{\"Result\":\"" + returnStr + "\"}", MediaType.APPLICATION_JSON).build();
}

现在,如果我在网址上发送user@domain.com,我从匹配器返回的响应为FALSE。

我甚至试图在webservice中硬编码eMailAddress_为user@domain.com,这样无论我传递什么参数,webservice都会将匹配器应用于我知道在第一个应用程序中验证为TRUE的硬编码值。我仍然让匹配器返回FALSE。

我在java 1.8上使用netbeans 8.2。

0 个答案:

没有答案