如何检查字符串是否具有这样的特定模式?
XXXX-XXXX-XXXX-XXXX
4个字母数字字符,然后是减号,是上述结构的4倍。
我想做的是我想检查一个字符串是否包含这个结构,包括“ - ”。
我迷路了,有人能指出我正确的方向吗?
示例代码:
$string = "5E34-4512-ABAX-1E3D";
if ($pattern contains this structure XXXX-XXXX-XXXX-XXXX) {
echo 'The pattern is correct.';
}
else {
echo 'The pattern is invalid.';
}
答案 0 :(得分:1)
使用正则表达式
<?php
$subject = "XXXX-XXXX-XXXX-XXXX";
$pattern = '/^[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}$/';
if(preg_match($pattern, $subject) == 1);
echo 'The pattern is correct.';
} else {
echo 'The pattern is invalid.';
}
?>
[a-zA-Z0-9]
匹配单个字符
{4}
匹配字符恰好4次
\-
匹配转义的连字符
答案 1 :(得分:0)
使用preg_match:
$ok = preg_match('/^([0-9A-Z]{4}-){3}[0-9A-Z]{4}$/', $string)
如果您想考虑使用小写字符,请使用:
$ok = preg_match('/^([0-9A-Z]{4}-){3}[0-9A-Z]{4}$/i', $string)