[英]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");
}
您拥有的正则表达式将失败,因为它会检查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.