【问题标题】:RegEx for capturing digits in a string (PHP)用于捕获字符串中的数字的正则表达式 (PHP)
【发布时间】:2019-06-02 15:39:59
【问题描述】:

我正在提取工作编号并将它们与 mysql 数据库中的数据进行匹配,然后检索匹配的数据。

如果我的工作编号是123456,那么它匹配得很好,我得到了结果。 有些是123-456 有些是12-text,有些是12-text-345

$variable = $variable

我尝试匹配变量,但那是无效的。 我尝试在 PHPMyAdmin 中更改 SQL,但它甚至无法顺利运行。 我用谷歌搜索并认为我应该使用 RegExp。我试过。我可以添加一个斜线并使其适用于单个项目,但是,我不知道连字符在大量数组中的位置。它可能是第三个或第四个字符。 我尝试了 pregmatch,但我认为我不知道我在做什么。 我正在寻找几行代码来分析 PHP 变量并检测和转义任何元字符(如果有的话)。教程链接也可以,我很感激任何帮助

【问题讨论】:

  • 发布您尝试的代码将有利于您更快地获得答案。
  • 那么你是说输入的工号和数据库的格式不一样还是反过来?

标签: php regex regex-group regex-greedy regex-alternation


【解决方案1】:

在这里,如果我们希望只获取数字,则可以在捕获组中收集我们的数字,然后收集其他所有内容,然后将其替换为 $1,表达式类似于:

(\d+)|\D+

测试

$re = '/(\d+)|\D+/m';
$str = 'text-12-text-345';
$subst = '$1';

$result = preg_replace($re, $subst, $str);

echo $result;

输出

12345

DEMO

【讨论】:

  • 为什么不简单地用空字符串替换所有非数字,我认为不需要捕获组
  • 谢谢艾玛,非常感谢
猜你喜欢
  • 2019-10-10
  • 2019-09-29
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 1970-01-01
  • 2012-08-20
  • 2016-07-26
相关资源
最近更新 更多