PHP 正则表达式使用 preg_split

PHP Regex using preg_split

我需要从一个字符串中提取 2 个部分并将它们放在一个数组中。

$test = "add_image_1";

我需要确保此字符串以 "add_image" 开头并以“_1”结尾,但只在最后存储数字部分。我想使用 preg_split 作为学习经验,因为我将来需要使用它。

我不知道如何使用此函数来查找确切的单词(我尝试使用“\b”但失败了)所以我改用了“\w+”:

$result = preg_split("/(?=\w+)_(?=\d)/", $test);
print_r($result);

这工作正常,除了它还接受一堆其他无效格式,例如: "add_image_1_2323"。我需要确保它只接受这种格式。最后一位的长度可以大于 1 位。

结果应该是:

Array ( 

    [0] => add_image 

    [1] => 1 

)

我怎样才能使它更安全?

以下正则表达式检查 add_image 作为字符串的开头并匹配数字前的 _

正则表达式: (?<=add_image)_(?=\d+$)

解释:

  • (?<=add_image)往后看add_image

  • (?=\d+$) 向前查找字符串末尾的数字并匹配 _.

Regex101 Demo