【发布时间】:2013-03-21 06:38:39
【问题描述】:
我在使用 string.matches(regex) 时遇到了 url 验证器的问题。以下在 Java 6 中工作,但在 Java 7 中不工作。
regex = "^http[s]?://(([^/:\\.[:space:]]+(\\.[^/:\\.[:space:]]+)*)|([0-9](\\.[0-9]{3})))(:[0-9]+)?((/[^?#[:space:]]+)(\\?[^#[:space:]]+)?(\\#.+)?)?$"
此代码在客户端使用 GWT/GXT 在发送到服务器端之前验证用户输入。
至少可以说令人费解。
这是方法:
public boolean validateURL(String url) {
return ((url != null) && url.matches(VALID_URL_REGEX));
}
其中 VALID_URL_REGEX 等于上面的正则表达式
下面是调用 validateURL 方法的代码:
this.serverUrlTextField.addValidator(new AbstractValidator<String>() {
@Override
public List<EditorError> validate(Editor<String> field, String value) {
String url = serverUrlTextField.getText();
if (!Util.validateURL(url)) {
okButton.setEnabled(false);
return createError(new DefaultEditorError(field, INVALID_URL, value));
}
okButton.setEnabled(true);
return null;
}
});
【问题讨论】:
-
您能否提供一个输入示例供我们检查?
-
抱歉,忘了补充一点,Java 7 中的所有内容都作为错误返回。
-
@TungPham 您能否发布一个适用于 Java 6 并导致 Java 7 错误(输入、方法调用等)的示例代码,以便我们重现它?
-
URL 文本字段的自动验证设置为 true。 yahoo.com 失败
-
@TungPham 在你展示你正在运行的代码之前,很难得到答案......
标签: javascript regex url gxt