【问题标题】:add --> as delimiter to the URL pattern添加 --> 作为 URL 模式的分隔符
【发布时间】:2017-02-25 12:14:58
【问题描述】:

为了提取 URL,我使用这个正则表达式:

'/https?\:\/\/[^\",\s\]\|]+/i'

(以空格、"、逗号或 | 结尾)。

问题是我还需要添加“-->(3 个符号 -->)作为 URL 的中断。但是没有运气。

附:我知道这不是一个完美的 URL 验证,但是 URL 存储在 db 中的字符串中,空格、逗号、"、| 和 --> 绝对是 URL 的分隔符(如果在末尾遇到)。

【问题讨论】:

  • 我的建议是再添加一个包含 pattern -->(.*?) 等所有内容的模式,并且在 preg_match 函数中,您可以选择第一个但第二个,这样我想这会起作用。

标签: php regex string url


【解决方案1】:

下面的 regex 应该这样做:

https?:\/\/.*?(?=\s|,|"|\||-->|$)

demo

【讨论】:

  • 抱歉,example.com/img/ri/3742-17 测试没有通过,因为它会在破折号所在的位置进行。对不起。
  • @Haradzieniec 检查更新的答案。现在它应该可以工作了:)
【解决方案2】:

要在多字符分隔符处停止,模式是重复前进 1 个字符,直到您在前瞻中找到分隔符:

(?:(?!delimiter).)*

在你的情况下:

https?://(?:(?!-->)[^",\]\s|])+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 2011-03-29
    • 2014-04-08
    • 2022-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多