如何使用正则表达式提取最后 2 个分隔数字

How to extract the last 2 delimitered numbers using regex

我必须提取 number-number 的第一个实例。例如,我想从字符串 bnjdfg/dfg.vom/fdgd3-8236497-234783/dfg8jfg.vofg 中提取 8236497-234783。该字符串没有明显的结构,除了数字后跟破折号和数字,这是我要提取的内容。

我要提取的东西可能在字符串的最开始,或者中间,或者结尾,或者整个字符串本身只是一个number-number

$b = "bnjdfg/dfg.vom/fdgd3-8236497-234783/dfg8jfg.vofg";

preg_match('\d-\d', $b, $matches);

echo($matches[0]);
// Expecting to print 8236497-234783
  1. 您缺少正则表达式周围的分隔符。 PHP 的 preg 函数要求正则表达式以标点符号开头,并在正则表达式末尾查找匹配字符(因为标志可以放在第二个定界符之后)。
  2. \d 只匹配一个数字。如果要匹配一串数字,应该写\d+.
  3. 你应该要求数字被\b的单词边界包围,否则它会匹配fdgd3
  4. 末尾的3
preg_match('/\b\d+-\d+\b/', $b, $matches);