【问题标题】:preg_match : numbers between hyphenpreg_match : 连字符之间的数字
【发布时间】:2012-12-07 02:39:39
【问题描述】:

我需要像这样验证和字符串:

$string = 'test3-10-2'; 

我需要连字符之间的倒数第二个数字,因此在本例中为“10”。这些是其他示例:

$string2 = 'test45-50-178-1';  //match = 178
$string3 = 'test45-580-89-12-1';  //match = 12

你能帮帮我吗?提前谢谢

【问题讨论】:

    标签: string preg-match hyphen


    【解决方案1】:

    这个正则表达式应该使用积极的前瞻来解决问题:(将 4 更改为您想要允许的最大位数)

    \d{1,4}(?=-\d{1,4}$)
    

    【讨论】:

    • 谢谢!有用。如果我想匹配连字符之间的最后两个数字?例如。 $string3 = 'test45-580-89-12-10'; //match = 12 和 1
    • 在这种情况下,您所要做的就是删除正向预测以将其包含在匹配中,如下所示:\d{1,4}-\d{1,4}$
    • 好的,但是通过这些方式我得到: $matches = 12-10 。我需要 $matches = array(12,10);这是可能的 ? (注意我在下一条评论中打错字了。我写了 //match = 12 and 1 但我打算 //match = 12 and 10)
    • 你可以像@Kelly 建议的那样分解结果,你会得到一个数组,或者通过用括号将正则表达式中的数字括起来来使用捕获组:(\d{1,4})-(\d{1,4})$。然后你通过 $1 和 $2 引用组
    【解决方案2】:

    您也可以使用explode 函数(类似于split):

    $items = explode("-",$yourString);
    end($items);
    $whatYouWant = prev($items);
    

    【讨论】:

      猜你喜欢
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      相关资源
      最近更新 更多