PHP preg_replace regex,获取可能包含_和 - 符号的括号之间的数字

时间:2018-04-06 12:34:50

标签: php regex preg-replace

这让我疯了!我需要一个正则表达式从字符串中提取一个数字。该数字可能包括 - (减号)或_(下划线)符号,最好使用preg_replace。

示例字符串:“这是一个示例(文本),带有(数字)(01230_12-3)”。

我需要提取的是(01230_12-3),但没有括号。

到目前为止,这就是我所拥有的:

$FolderTitle[$Counter]) = "This is 1 example (text) with a (number)(01230_12-3)";
$FolderNumber[$Counter] = preg_replace("/([^0-9-_])/imsxU", '', $FolderTitle[$Counter]);

1 个答案:

答案 0 :(得分:1)

  • 当使用preg_match()时,输出变量是必要的,所以我使用速记条件来确定是否存在匹配并为回声设置必要的值。
  • 您需要匹配前导(然后忘记它与\K匹配,然后匹配尽可能多的符合条件的字符。
  • 这些模式修饰符都不是必需的,所以我删除了它们。
  • 您可以使用$FolderNumber[$Counter] =
  • 替换我的回音
  • 模式中的前导括号必须使用\进行转义。
  • \d[0-9]相同。

代码:(Demo

$Counter = 0;
$FolderTitle[$Counter] = "This is 1 example (text) with a (number)(01230_12-3)";
echo preg_match("/\(\K[-\d_]+/", $FolderTitle[$Counter], $out) ? $out[0] : 'no match';

输出:

01230_12-3