gpt4 book ai didi

php - 电话号码不包含此模式 AABBCC 例如 112233

转载 作者:搜寻专家 更新时间:2023-10-31 21:34:34 25 4
gpt4 key购买 nike

我想检查电话号码是否包含此模式 AABBCC其中 A[0-9],B[0-9],C[0,9] 它们应该不同,例如 112233,553322,887766

让我们假设我有一个电话号码 03334112233它会说是模式匹配。

PHP 代码,但它是针对精确字符串的

        $str = 'aabbaabbccaass'; //or whatever
if (preg_match('/(?!.*?aabbcc)^.*$/', $str))
echo "accepted\n";
else
echo "rejected\n";

问题如果字符串是数字我不知道怎么办

Possible Duplicate但它不包含答案和确切的细节。

已编辑:我想匹配此模式 AABBCC 中字符串的最后 6 个字符,例如 03329112233

最佳答案

要将数字与 AABBCC 格式匹配,您可以使用此模式:

(?:(\d)\1(?!\1)){2}(\d)\2

使用示例:

if (preg_match('/(?:(\d)\1(?!\1)){2}(\d)\2/', $str)
echo "rejected\n";
else
echo "accepted\n";

但是如果你还有其他的测试要做(比如只有数字),这样使用会更灵活:

if (preg_match('/(?!.*(?:(\d)\1(?!\1)){2}(\d)\2)^\d+$/', $str)
echo "accepted\n";
else
echo "rejected\n";

图案细节:

(?:         # open a non capturing group that describes a repeated digit
(\d) # capture the first digit with group 1
\1 # a backreference to group 1 (the same digit thus)
(?!\1) # check with a negative lookahead that the same digit doesn't follow
){2} # repeat the group two times
(\d)\2 # same thing for digits 5 & 6 (the lookahead isn't needed here)

请注意,捕获组中的数字在非捕获组的每次重复时都会发生变化(因为负先行强制它)。

注意:如果要拒绝包含例如 111122 或 112222 或 111111 的数字,您只需要删除否定前瞻。
如果要拒绝格式为 112211 或 448844 的数字,则必须像这样更改模式:(\d)\1(?!\d{0,2}\1)(\d)\2( ?!\2)(\d)\3

关于php - 电话号码不包含此模式 AABBCC 例如 112233,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23043291/

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