php - 在 preg_match_all() 中需要一些关于正则表达式的帮助

标签 php regex preg-match-all

所以我需要从字符串中提取票号“Ticket#999999”。我该如何使用正则表达式来执行此操作。

如果我在 Ticket#9999 中有多个号码,我当前的正则表达式可以正常工作。但是如果我只有 Ticket#9,它就不起作用了,请帮忙。

当前正则表达式。

 preg_match_all('/(Ticket#[0-9])\w\d+/i',$data,$matches);

谢谢。

最佳答案

在您的模式中,[0-9] 匹配 1 个数字,\w 匹配另一个数字,\d+ 匹配 1+ 个数字,因此# 后需要 3 位数字。

使用

preg_match_all('/Ticket#([0-9]+)/i',$data,$matches);

这将匹配:

  • Ticket# - 文字字符串 Ticket#
  • ([0-9]+) - 第 1 组捕获 1 个或多个数字。

PHP demo :

$data = "Ticket#999999  ticket#9";
preg_match_all('/Ticket#([0-9]+)/i',$data,$matches, PREG_SET_ORDER);
print_r($matches);

输出:

Array
(
    [0] => Array
        (
            [0] => Ticket#999999
            [1] => 999999
        )

    [1] => Array
        (
            [0] => ticket#9
            [1] => 9
        )

)

关于php - 在 preg_match_all() 中需要一些关于正则表达式的帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43783937/

相关文章:

php - IE 在第二次中未获取($.get()) 新数据

php - 如何在 Laravel 5.2 中获得与外键的多对多关系?

java - 使用java从数据之间提取子字符串的正则表达式

php - 下拉列表未在 IE 中填充?

php - 使用 iso 8601 显示实际时间

JavaScript 正则表达式 : nine or twelve digits in a string

javascript - 正则表达式匹配带或不带撇号的字符串

php - youtube正则表达式会吞下剩余的文字

php - preg_match_all 无法在 php 中工作,但在在线正则表达式测试器中成功测试

PHP:如何获取 preg_match_all 的字符串索引?