Regex 用于允许特定URL的正则表达式
正则表达式非常混乱,尤其是对于长URL。下面是检查URL并将自定义消息存储在$msg变量中的代码。在本例中,它允许除facebook之外的所有URL。我需要做些改变 它应该允许所有的url,除了有视频的那个,它不应该允许facebook的urlRegex 用于允许特定URL的正则表达式,regex,Regex,正则表达式非常混乱,尤其是对于长URL。下面是检查URL并将自定义消息存储在$msg变量中的代码。在本例中,它允许除facebook之外的所有URL。我需要做些改变 它应该允许所有的url,除了有视频的那个,它不应该允许facebook的url if(some url website link){ $msg = 'url allowed'; }elseif(preg_match("|^http(s)?://(www.)?facebook.([a-z]+)/(.*)?$|i
if(some url website link){
$msg = 'url allowed';
}elseif(preg_match("|^http(s)?://(www.)?facebook.([a-z]+)/(.*)?$|i", $url)){
$msg = 'url NOT allowed';
}else{some other url test
}
应该允许。如何编写只允许facebook视频URL而不允许facebook其他URL的正则表达式
我想这样做一个更多的fb网址太喜欢
(应该允许)
谢谢您可以使用以下正则表达式匹配所有非视频或状态更新的
facebook.com
URL:
^http(s)?:/(www\)?facebook([a-z]+)/(?!(?:video\.php\?v=\d+;username/posts/\d+)。*$
说明:
^ # Assert position at the beginning of the line
http(s)?:// # The protocol information
(www\.)? # Match 'www.'
facebook\. # Match 'facebook.'
([a-z]+) # Match the TLD
/ # A literal forward slash '/'
(?! # If not followed by:
(?: # Start of non-capturing group
video\.php\?v=\d+ # a video URL
| # OR
username/posts/\d+ # a status update URL
) # End of non-capturing group
) # End of negative lookahead
.* # Match everything until the end if above condition true
$ # Assert position at the end of the line
您不知道后一个url是否是视频,因此,您的问题甚至在想到一个有效的regex.facebook.com/video.php后跟一些随机字符串将是视频url之前就开始了。类似地,facebook.com后面跟着一些用户名,后面跟着帖子,后面跟着一些随机数字,这就是帖子的url。除了视频和帖子url,不允许使用其他facebook url。精彩信息。非常感谢。我需要通过这些来理解每一个参数。我会回到你身边。谢谢。看来情况正好相反。我假设这个表达式只允许视频和帖子,但它允许developers.facebook.com、/photo.php?fbid=1000000000000、/about、/help、/mobile、/badges、/directory、/careers、/policies、/policity.php、/legal、/privacy。。。几乎所有的东西。正则表达式只能用于接受视频和帖子吗?facebook.com或facebook.com/anything都是不允许的。只有/video.php?v=1000000000000和/someusername/posts/10000000000000应该是allowed@user3736026:是的,我就是这样做的。请参阅正则表达式上方的注释:“匹配所有不是视频或状态更新的facebook.com URL”。因此,为了只匹配视频和帖子,您需要:
如果(!preg_match('regex',$url)){…}
。注意否定代码>。不知道发生了什么。。。我又试了一遍正则表达式,有否定的,也没有否定的。。。。没有否定,(最初的解决方案)几乎所有的facebook URL都可以与视频和帖子一起使用。。。现在否定所有的URL是不允许的。我很确定我做得很好。。。我刚刚用您提供的且没有否定的reqex替换了问题中的reqex^http(s)?:/(www.)?facebook([a-z]+)/(.*)$。@user3736026:我不确定您做错了什么。如果您想要一个只允许视频URL和状态URL,而不允许其他内容的正则表达式,您可以使用以下内容:^http(s)?:/(www\)?facebook。([a-z]+)/(?:video\.php\?v=\d+;username/posts/\d+)$
。