使用 preg_match 验证特定语法
Validating specific syntax with preg_match
我在查看网络上有关正则表达式的示例和文档后想出了下面的代码,但是它没有按预期工作。所以根据下面的要求,只有 'ABCDEF05'、'A21 和 'C99' 应该被验证。
要求:
- 字符串的第一部分可以;最小 1 最大 6 个字符长。大写
只有.
- 字符串的第二部分可以;恰好 2 个字符长,但 00 不是
已接受。
- 总而言之:它可以是最少 3 个最多 8 个字符。
测试:
$arr = array('d12', '1', 'A123', 'A1234', 'AB00', 'ABCDEFG01', 'ABCDEF00', 'ABCDEF05', 'A21', 'C99');
foreach ($arr as &$key) {
if (preg_match('/^([A-Z]{1,6})([1-9][0-9]{2})/', $key)) {
echo "$key\n";
}
}
使用否定前瞻:
if (preg_match('/^([A-Z]{1,6})(?!00)(\d\d)$/', $key)) {
我在查看网络上有关正则表达式的示例和文档后想出了下面的代码,但是它没有按预期工作。所以根据下面的要求,只有 'ABCDEF05'、'A21 和 'C99' 应该被验证。
要求:
- 字符串的第一部分可以;最小 1 最大 6 个字符长。大写 只有.
- 字符串的第二部分可以;恰好 2 个字符长,但 00 不是 已接受。
- 总而言之:它可以是最少 3 个最多 8 个字符。
测试:
$arr = array('d12', '1', 'A123', 'A1234', 'AB00', 'ABCDEFG01', 'ABCDEF00', 'ABCDEF05', 'A21', 'C99');
foreach ($arr as &$key) {
if (preg_match('/^([A-Z]{1,6})([1-9][0-9]{2})/', $key)) {
echo "$key\n";
}
}
使用否定前瞻:
if (preg_match('/^([A-Z]{1,6})(?!00)(\d\d)$/', $key)) {