PHP:验证包含数字的字符串,用连字符分隔(可能用preg_match)


PHP: Validate string containing numbers, separated by hyphen (possible by preg_match)?

我正在尝试验证一个包含数字的字符串,其中每四个数字都用连字符分隔,例如1111-2222-3333-4444

我正在尝试进行某种验证,这样我就可以保证使用这种格式(有16位数字、三个连字符,没有其他内容)。我有一个preg_match,它只检查数字,但我需要接受连字符和这种格式。

preg_match('/^[0-9]{1,}$/', $validatenumbers)

我试过用regex做这件事,但不幸的是,它不是我最强大的一面,所以我无法正确验证数字。

重要的是,它是在PHP而不是Javascript中,因为它可以在浏览器中"关闭"Javascript。

preg_match("/^([0-9]{4}-){3}[0-9]{4}$/", $input);

([0-9]{4}-){3}正好匹配3组,每组4位,后跟一个连字符。它由另一个组[0-9]{4}(4位不带连字符的数字)终止。

preg_match('/^[0-9]{4}'-[0-9]{4}'-[0-9]{4}'-[0-9]{4}$/',$numbers);

我认为这应该行得通。

这看起来像一个信用卡号。如果是这种情况,您应该使用Luhn checksum而不是简单的regex。

try:

if(preg_match('#^'d{4}-'d{4}-'d{4}-'d{4}$#',$string){}

如果您需要匹配确切的格式,模式将是'~^'d{4}-'d{4}-'d{4}-'d{4}$~',或者您可以更一般地这样写:'/^('d+-)*'d+$/'(这将匹配11、11-11111…等等),