繁体   English   中英

带参数的URL的正则表达式

[英]Regular Expression for URL with parameters

我使用下面的表达式来表示这样的有效URL: http : //www.linkedin.com/in/johndoe

(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.linkedin)+.(com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se)$)(:(\d+))

但是验证仅适用于http://www.linkedin.com

如果我输入带有参数的完整网址,则无法正常工作。 请帮忙。

尝试使用此正则表达式:

(?i)(?:https?|ftps?)://[A-Z0-9][A-Z0-9_-]*\.linkedin+\.(?:com|org|net|dk|at|us|tv|info|uk|co\.uk|biz|se)(?::\d+)?(?:/.*)?$

您的表达有误,您清楚地确定了linkedin。

用这个:

if (!filter_var($url, FILTER_VALIDATE_URL) === false) {
    echo("$url is a valid URL");
} else {
    echo("$url is not a valid URL");
}

来源: http//www.w3schools.com/php/filter_validate_url.asp

您拥有的正则表达式将失败,因为它会检查TLD之后的字符串结尾(请参阅se)之后的$ se) )。 而且,它将仅验证“ linked.in” URL。

因此,您必须让更多字符。 这是您的固定正则表达式

^(?>(?:https?|ftp):\/\/(?:(?:[a-zA-Z0-9][a-zA-Z0-9_-]*)\.linkedin\.(?:com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se))(?:(?:\/[^\/\r\n]*)*)?)$

它同时匹配:

http://www.linkedin.com/in/johndoe
http://www.linkedin.com

一个示例程序

<?php
   $re = "/^(?>(?:https?|ftp):\\/\\/(?:(?:[a-zA-Z0-9][a-zA-Z0-9_-]*)\\.linkedin\\.(?:com|org|net|dk|at|us|tv|info|uk|co.uk|biz|se))(?:(?:\\/[^\\/\\r\\n]*)*)?)$/m"; 
   $str = "http://www.linkedin.com/in/johndoe\n\nhttp://www.linkedin.com"; 
   preg_replace_callback($re, function ($matches) {
        echo "Matched: " . $matches[0] . "\n";
      },  $str);
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM