【问题标题】:preg_match regex match more than 4 digitspreg_match 正则表达式匹配超过 4 位数字
【发布时间】:2014-10-16 16:18:31
【问题描述】:

我有 $input,其中包含:

<a href="http://digitalocean.com/info/hello-23-kitty-show-1-d-zay-ya-9013294119" title="Hello Kitty  (Show &amp; Zay Ya" style="font-size:medium;" target="_blank" class="highlight-item">

我需要 preg_match 仅在 href url (9013294119) 中的最后一个数字。这些数字有时会更长或更短,因为 $input 中的 URL 会有所不同(但其长度始终至少为 4 个字符)。

我尝试了以下正则表达式,但没有运气,因为我的正则表达式经验非常有限:

preg_match('/^[0-9+]$/', $input, $output);

有什么帮助吗?

【问题讨论】:

    标签: php regex preg-match


    【解决方案1】:

    删除^(开头)和$(结尾)锚点,并使用量词和一些前瞻和后随。

    /(?<=-)[0-9]{4,}(?=")/
    

    {4,} 表示匹配上一个令牌,在本例中为 [0-9],匹配 4 次或更多次。

    DEMO

    如果您的字符串模式不一样,您可以使用href="[^"]+?([0-9]{4,})",第 1 组将包含您想要的内容。

    【讨论】:

    • @AvinashRaj 是的,OP 没有提供更多信息
    • 谢谢,像魅力一样工作,我得到了未知修饰符'['错误,但我在开始和结束时添加了 / 并且它起作用了。
    • @DadaB 如果这是您要解析的精确输入,那么 [0-9]{4,} 就足够了..
    猜你喜欢
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2013-06-12
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多