gpt4 book ai didi

php - 获取指定长度数字的字符串

转载 作者:行者123 更新时间:2023-12-02 07:24:16 25 4
gpt4 key购买 nike

假设有一个数组如下:

$arr = array('foo1234bar', 'foo1234', '1234bar', 'foo12345bar');

而我只需要总共包含4 个字符的元素。所以除了foo12345bar,其他3个元素都是有效的。

因为 '\d{4}' 会匹配 foo12345bar,所以我笨拙地尝试以下操作:

$arr = array('foo1234bar', 'foo1234', '1234bar', 'foo12345bar');
$result = array();
foreach ($arr as $value) {
preg_match('/\d+/', $value, $match);
if (strlen($match[0]) != 4) {
continue;
}
$result[] = $value;
}
var_dump($result); //array('foo1234bar', 'foo1234', '1234bar')

有没有正则表达式可以直接匹配(所以可以省略if条件)?先感谢您。

最佳答案

这很容易通过环视正则表达式和 preg_grep function 来处理:

$arr = array('foo1234bar', 'foo1234', '1234bar', 'foo12345bar');
print_r(preg_grep('/(?<!\d)\d{4}(?!\d)/', $arr));

正则表达式分解:

(?<!\d)  # assert previous char is not a digit
\d{4} # match exact 4 digits
(?!\d) # assert next char is not a digit

输出:

Array
(
[0] => foo1234bar
[1] => foo1234
[2] => 1234bar
)

关于php - 获取指定长度数字的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35478882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com