标签: url-validation

(rails)使用regexp验证URL帮助

我正在使用以下内容来验证URL是否有效格式化:

validates_format_of :website, :with => URI::regexp(%w(http https))
Run Code Online (Sandbox Code Playgroud)

但是,当url不以http://或开头时,它不起作用https://.是否有一些类似的方法来验证带有URI::regexp(或URI)的URL 并使其包含不以http://?开头的有效URL ?(例如,www.google.com有效,原样http://www.google.com)

regex ruby-on-rails url-validation

5
推荐指数
1
解决办法
5575
查看次数

Yii框架:在URL Validator中指定defaultScheme

我确信这很简单,但我无法理解.我正在尝试将defaultScheme设置为我的模型中的Yii URL验证器,以便它接受像www.something.com和http://www.something.com这样的地址.

为此,我使用以下代码:

...
array('website', 'url', 'defaultScheme' => 'http://'),
...
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用,我在尝试更新时仍然得到"网站不是有效的URL"错误.我究竟做错了什么?

yii url-validation

5
推荐指数
1
解决办法
3907
查看次数

为什么UrlValidator对我的某些Urls不起作用?

String[] schemes = {"http","https"};
UrlValidator urlValidator = new UrlValidator(schemes, UrlValidator.ALLOW_ALL_SCHEMES);
System.out.println(urlValidator.isValid(myUrl));
Run Code Online (Sandbox Code Playgroud)

以下网址说,无效。任何人都知道为什么。本地网络是一个本地网络。但这适用于任何其他公共网络(似乎)。

http://aunt.localnet/songs/barnbeat.ogg
Run Code Online (Sandbox Code Playgroud)

java url-validation

5
推荐指数
2
解决办法
1万
查看次数

URL验证工作正常,但保持连接并限制任何进一步的请求

public class UrlVarificationTask extends AsyncTask<Void, Void, Integer> {

    private String url;
    private UrlVarificationDelegate delegate;
    private HttpURLConnection huc;

    public UrlVarificationTask(String url, UrlVarificationDelegate delegate) {
        this.url = url;
        this.delegate = delegate;
    }

    @Override
    protected void onPreExecute() {

        super.onPreExecute();
    }

    @Override
    protected Integer doInBackground(Void... params) {
        int responseCode = 0;
        try {
            System.setProperty("http.keepAlive", "false");
            URL u = new URL(url);
            huc = (HttpURLConnection) u.openConnection();
            huc.setRequestMethod("HEAD");
            huc.connect();
            responseCode = huc.getResponseCode();

        } catch (MalformedURLException mal) {
            responseCode = -555;
        } catch (IOException io) {
            responseCode = …
Run Code Online (Sandbox Code Playgroud)

android http http-headers url-validation

5
推荐指数
1
解决办法
321
查看次数

如何在java中验证允许使用通配符(*,%)的URL(域)

我想在java中检查验证URL是否允许使用通配符.

我找到了一些关于在java中验证URL的好例子(REGEX,urlValidator),但是那些没有提供通配符.

这是我正在练习的内容:

CODE(urlValidator)

public void urlValidiTest(){
    System.out.println(this.urlCheck("https://www.google.com"));
    System.out.println(this.urlCheck("https://google.com"));
    System.out.println(this.urlCheck("*.com"));
}

public boolean urlCheck(String url){
    return new UrlValidator().isValid(url);
}
Run Code Online (Sandbox Code Playgroud)

OUTPUT

真正

真正

CODE(正则表达式)

public void regexTest() {
  String[] URLs = new String[] { "http://www.google.com", "http://google.com/","*.com" };
    Pattern REGEX = Pattern.compile("(?i)^(?:(?:https?|ftp)://)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-z\\u00a1-\\uffff0-9]-*)*[a-z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$");
    for (String url : URLs) {
        Matcher matcher = REGEX.matcher(url);
        if (matcher.find()) {
            System.out.println(matcher.group());
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

结果

http://www.google.com

http://google.com/

我想要做的是以上所有URL都有效.

我该如何解决这个问题呢?

任何评论将不胜感激.谢谢.

更新

我摆脱了方案部分,并在答案之后的域部分添加了|*和| \.*(|*和|.*给了我一个错误 - 无效的转义序列(有效的是\ b\t \n\f\r \n \"\') - 但我不确定更改是否正确).

现在它不允许"google.com"; …

java regex url-validation

5
推荐指数
1
解决办法
334
查看次数

需要正则表达式来验证 URL 并支持 %20 和 ()

我目前正在使用以下正则表达式来验证 URL:

^(?#Protocol)(?:(?:ht|f)tp(?:s?)\:\/\/|~\/|\/)?(?#Username:Password)(?:\w+:\w+@)?  (?#Subdomains)(?:(?:[-\w]+\.)+(?#TopLevel Domains)(?:com|org|net|gov|mil|biz|edu|info|mobi|name|aero|jobs|museum|travel|[a-z]{2}))(?#Port)(?::[\d]{1,5})?(?#Directories)(?:(?:(?:\/(?:[-\w~!$+|.,=]|%[a-f\d]{2})+)+|\/)+|\?|#)?(?#Query)(?:(?:\?(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)(?:&(?:[-\w~!$+|.,*:]|%[a-f\d{2}])+=?(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)*)*(?#Anchor)(?:#(?:[-\w~!$+|.,*:=]|%[a-f\d]{2})*)?$
Run Code Online (Sandbox Code Playgroud)

我从网络上的某个地方借用了这个(不记得在哪里)来改进这一点:

^((https?|file|ftp|gopher|news|nntp):\/\/)([a-z]([a-z0-9\-]*\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)|(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5]))(\/[a-z0-9_\-\.~]+)*(\/([a-z0-9_\-\.]*)(\?[a-z0-9+_\-\.%=&amp;]*)?)?(#[a-z][a-z0-9_]*)?$
Run Code Online (Sandbox Code Playgroud)

但是,这些都无法验证此 url(应该是有效的):

http://somedomain.com/users/1234/images/Staff%20Photos%202008/FirstName%20LastName_1%20(Small).jpg
Run Code Online (Sandbox Code Playgroud)

问题在于 %20 和圆括号 ()。尽我所能,我无法使用上面的任何一个正则表达式来正确验证上面的 url,而不会破坏其他内容。我没有编写花哨的正则表达式的经验,所以这也没有帮助。我发现的所有其他网络结果都因愚蠢的事情而失败,例如:

http://www.test..com
Run Code Online (Sandbox Code Playgroud)

如有帮助,将不胜感激。

regex validation url url-validation

4
推荐指数
1
解决办法
1467
查看次数

完全验证URL

我已经试过验证URL以便在我的代码中发送到服务,任何人都可以给我正则表达式来验证应该以http://开头的URL,并且应该以.com,.org,.net,.edu,.in 结尾.url.i中的其他一些常见结局已搜索了很多,但我得到了准确的这种类型正则表达式.请帮助我.提前致谢.

regex iphone url-validation

3
推荐指数
1
解决办法
2525
查看次数

适用于所有方案的Apache UrlValidator

org.apache.commons.validator.UrlValidator用来验证URL.对于http://www.google.com,它返回true,但对于www.google.com 则为false

我也想允许www.google.com.我将ALLOW_ALL_SCHEMES应用为参数,但它不起作用.如何自定义UrlValidator,使其返回true为www.google.comhttp://localhost:8282/GFEReporting也.有没有办法定制这个,所以它可以采取所有方案,没有方案?请告诉我.

或者还有其他方法吗?

提前致谢...

java url url-validation

2
推荐指数
1
解决办法
1227
查看次数

将域添加到 apache.commons 中的 UrlValidator

所以我正在使用 Commons UrlValidator (org.apache.commons.validator.routines.UrlValidator),我想知道是否有一种方法可以自定义它允许的域。现在似乎只允许 TLD,但我希望有一两个有效的名称不在该列表中,例如“.corp”(列表可在此处找到:http://data.iana.org/TLD/tlds-alpha -by-domain.txt)。是否有一种设置或解决方法,以便我不必创建自己的 url 验证器,并且可以将其与添加的域一起使用?

java url apache-commons url-validation

2
推荐指数
1
解决办法
3335
查看次数

验证没有方案的 URL

斯威夫特 5、Xcode 10、iOS 12

我的代码用于UIApplication.shared.canOpenURL验证 URL,不幸的是没有“http://”就失败了。

例子:

print(UIApplication.shared.canOpenURL(URL(string: "stackoverflow.com")!)) //false
print(UIApplication.shared.canOpenURL(URL(string: "http://stackoverflow.com")!)) //true
print(UIApplication.shared.canOpenURL(URL(string: "129.0.0.1")!)) //false
print(UIApplication.shared.canOpenURL(URL(string: "ftp://129.0.0.1")!)) //true
Run Code Online (Sandbox Code Playgroud)

我知道方案(iOS9+)的变化,我知道如果字符串尚未以“http://”开头,我可以添加前缀,然后检查这个新字符串,但我仍然想知道:

问题:我如何添加“没有方案”方案,以便像“stackoverflow.com”这样的有效 URL 也返回true(这是否可能?)?

xcode url-validation ios swift

2
推荐指数
1
解决办法
1870
查看次数

在PHP和Jquery中验证网址?

我想在客户端和服务器端验证中,在jquery和PHP中验证以下类型的url。

我已经创建了正则表达式来验证jQuery中的URL

^(http:\/\/www.|https:\/\/www.|ftp:\/\/www.|www.){1}([0-9A-Za-z]+\.)
Run Code Online (Sandbox Code Playgroud)

但是它不能验证URL http://en.wikipedia.org/wiki/Great_Wall_of_China并给出错误。

请帮忙

谢谢!

php jquery url-validation

1
推荐指数
1
解决办法
2384
查看次数

C#中的URL正则表达式

我试图找到一个正则表达式,将尽可能多的URL验证.我在MVC3的输入字段中使用它:

[RegularExpression(@"expression...")]
Run Code Online (Sandbox Code Playgroud)

我发现这个正则表达式 - "diegoperini",我喜欢它,但我不知道如何将它从php转换为.net版本:

_^(?:(?:https?|ftp)://)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})
(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})
(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])
(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))
|(?:(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)(?:\.
(?:[a-z\x{00a1}-\x{ffff}0-9]+-?)*[a-z\x{00a1}-\x{ffff}0-9]+)*
(?:\.(?:[a-z\x{00a1}-\x{ffff}]{2,})))(?::\d{2,5})?(?:/[^\s]*)?$_iuS
Run Code Online (Sandbox Code Playgroud)

它看起来如何?

c# regex url-validation

1
推荐指数
1
解决办法
2886
查看次数

正则表达式检查有效的网址 http 或 www

我想检查用户插入的 URL 是否有效。我有不同的情况允许用户插入 URL

1) www.test.com (valid)
2) http://test.com (valid)
3) http://www.test.com (valid)
4) www.test (not valid)
Run Code Online (Sandbox Code Playgroud)

所以这种方式用户将能够插入wwwhttp,如果用户只插入,wwwhttp://在 URL 之前预先附加。我发现了很多正则表达式,但他们严格检查http://.

提前致谢。

php regex url-validation

0
推荐指数
1
解决办法
1350
查看次数