gpt4 book ai didi

javascript - java 6 与 java 7 string.matches 与正则表达式

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:45:46 29 4
gpt4 key购买 nike

我在使用 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;
}
});

最佳答案

看起来 GXT 有一个与 JavaScript 更兼容的特殊类 com.google.gwt.regexp.shared.RegExp。我还以一种应该在 JavaScript 中工作的方式修改了正则表达式。

String p = "^(http[s]?://)?(([^/:\\.\\s]+(\.[^/:\\.\\s]+)*)|([0-9](\\.[0-9]{3})))(:[0-9]+)?((/[^?#\\s]+)(\\?[^#\\s]+)?(\\#.+)?)?$";
RegExp r = RegExp.compile(p, "i");
String url = serverUrlTextField.getText();
if (!r.test(url)) {
okButton.setEnabled(false);
return createError(new DefaultEditorError(field, INVALID_URL, value));
}
okButton.setEnabled(true);
return null;

关于javascript - java 6 与 java 7 string.matches 与正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15722257/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com