检查字符串是否包含相同的模式

时间:2015-11-23 11:16:58

标签: php

如何检查字符串是否具有这样的特定模式?
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.';
}

2 个答案:

答案 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)