我需要使用php正则表达式匹配以下模式,但它并没有给出预期的结果。
例如: - 需要匹配模式 5555 5545 9930
$id = "4567 3423 4567";
$regex = "/^[1-9]\d{4} \d{4} \d{4}$/";
if (preg_match($regex, $id)) {
// Indeed, the expression "^[2-9]\d{2} \d{3} \d{4}$" matches the date string
echo "Found a match!";
}else {
// If preg_match() returns false, then the regex does not
// match the string
echo "The regex pattern does not match. :(";
}
答案 0 :(得分:1)
如果你想匹配:4个非零数字+空格+4个数字+空格+4个数字
^([1-9]){4} \d{4} \d{4}$
应该做的伎俩
答案 1 :(得分:1)
我认为修改现有正则表达式最安全的方法是添加第一个[2-9]\d{2} \d{3}
的替代方法:
^(?:[2-9]\d{2} \d{3}|\d{4} \d{4}) \d{4}$
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
请参阅regex demo
详细:
^
- 字符串开头(?:[2-9]\d{2} \d{3}|\d{4} \d{4})
- 其中一个替代方案:
[2-9]\d{2} \d{3}
- 从2
到9
的数字,任意2位数字,空格和3位数字|
- 或\d{4} \d{4}
- 4位数,空格,4位数(对于新的字符串类型)
- 空格\d{4}
- 4位数$
- 字符串结束。请参阅PHP demo:
$id = "4567 3423 4567";
$regex = "/^(?:[2-9]\d{2} \d{3}|\d{4} \d{4}) \d{4}$/";
if (preg_match($regex, $id)) {
echo "Found a match!";
} else {
echo "The regex pattern does not match. :(";
}
答案 2 :(得分:0)
正则表达式的简单编辑将是
^[1-9]\d{3} \d{4} \d{4}