当前位置: 首页 > 面试题库 >

正则表达式模式,以匹配带有或不带有http:// www的url

孔斌
2023-03-14
问题内容

我根本不擅长正则表达式。

到目前为止,我一直在使用许多框架代码,但是我找不到能够与URL匹配http://www.example.com/etcetc但也可以捕获诸如www.example.com/etcetc和的代码example.com/etcetc

任何帮助都会很棒。谢谢你们!


问题答案:

为了匹配所有类型的URL,以下代码应该起作用:

<?php
    $regex = "((https?|ftp)://)?"; // SCHEME
    $regex .= "([a-z0-9+!*(),;?&=$_.-]+(:[a-z0-9+!*(),;?&=$_.-]+)?@)?"; // User and Pass
    $regex .= "([a-z0-9\-\.]*)\.(([a-z]{2,4})|([0-9]{1,3}\.([0-9]{1,3})\.([0-9]{1,3})))"; // Host or IP
    $regex .= "(:[0-9]{2,5})?"; // Port
    $regex .= "(/([a-z0-9+$_%-]\.?)+)*/?"; // Path
    $regex .= "(\?[a-z+&\$_.-][a-z0-9;:@&%=+/$_.-]*)?"; // GET Query
    $regex .= "(#[a-z_.-][a-z0-9+$%_.-]*)?"; // Anchor
?>

然后,检查正则表达式的正确方法如下:

<?php
   if(preg_match("~^$regex$~i", 'www.example.com/etcetc', $m))
      var_dump($m);

   if(preg_match("~^$regex$~i", 'http://www.example.com/etcetc', $m))
      var_dump($m);
?>


 类似资料:
  • 问题内容: 我有一串 字符串1 (不包括引号)->“我的车号是# 8746253 ,这实际上很酷” 条件-数字8746253可以是任意长度,并且 -数字也可以紧跟在行尾。 我要分组 8746253 ,不应在其后加上点“”。 我努力了, 。#(\ d +)[^。]。 这可以肯定地得到我的数字,但是即使有一个点也可以匹配,因为[。^]将匹配数字的最后一位(例如,在下面的情况下为 3 ) 字符串2 (不

  • 我试图匹配所有包含引号的句子,独立于引号的长度或引号内的句子数量。 正如Alfe所指出的,得到一个完美的正则表达式可能是不可行的,但是如果可能的话,我想改进我正在使用的正则表达式。 现在我这样做是为了找到报价: 但是我想确保引用出现在一个句子中,然后捕捉整个句子。 我所说的一句话是指一段文字: 通常前面有空格 正如阿尔夫指出的那样,这并不能涵盖所有的句子,但如果我能满足这些条件,那就足够了。 例如

  • 我有一个表单,它有一个输入字段,只要求一个有效的youtube url,没有逗号分隔的youtube url。我使用以下正则表达式验证youtube url的用户输入: 但如果用户输入逗号分隔的有效youtube链接,这些正则表达式就会失败。 我想要一个正则表达式,simpy只允许在输入字段中有一个有效的youtube链接。有人能在这方面帮我吗,因为我对regex还不熟悉? 例如: https:/

  • 我尝试用下面的正则表达式做一个简单的文件名匹配,我测试了从这个为示例文件名工作 当我在<code>find</code>的<code>-regex</code<标志中结合这一点时 该命令未标识路径中存在的文件(例如 )。我知道此中有许多现有的正则表达式类型,但我意识到我的类型是 的并尝试如下, 仍然没有结果。我搜索了一些类似的此类问题,但它们涉及给出错误的正则表达式,导致找不到文件。就我而言,尽管

  • 有没有一种方法可以在python中编写与以下格式的字符串匹配的正则表达式: 或 在这里,$=表示零或更多的空白可以存在 :来自字符串的固定子集的字符串['feat','fix','docs','断'] :最大长度为n的字符串 :最大长度为m的字符串 前缀应该始终是一个字符串,之后是一些最大q长度的字母数字字符 注意:我们不能省略像应该使用与下面示例中所示完全相同的格式: feat(feat new

  • 有没有人试图描述与正则表达式匹配的正则表达式? 由于重复的关键字,这个主题几乎不可能在网上找到。 它可能在实际应用程序中不可用,因为支持正则表达式的语言通常具有解析它们的方法,我们可以将其用于验证,以及一种在代码中分隔正则表达式的方法,可用于搜索目的。 但是我仍然想知道匹配所有正则表达式的正则表达式是什么样子的。应该可以写一个。