我正在尝试验证一个包含数字的字符串,其中每四个数字用连字符分隔,例如1111-2222-3333-4444
我正在尝试进行某种验证,所以我可以保证使用这种格式(有16位数,三个连字符,没有别的)。我有这个preg_match,它只检查数字,但我需要接受连字符和这种格式。
preg_match('/^[0-9]{1,}$/', $validatenumbers)
我试过用正则表达式来做但不幸的是它不是我最强的一面,所以我无法正确验证这些数字。
重要的是,它是在PHP而不是Javascript,因为能够在浏览器中“关闭”javascript。
答案 0 :(得分:4)
preg_match("/^([0-9]{4}-){3}[0-9]{4}$/", $input);
([0-9]{4}-){3}
正好匹配3组4位数后跟连字符。这是由另一个组[0-9]{4}
终止的(4个数字没有连字符)。
答案 1 :(得分:1)
preg_match('/^[0-9]{4}\-[0-9]{4}\-[0-9]{4}\-[0-9]{4}$/',$numbers);
我认为这应该有用。
答案 2 :(得分:1)
这看起来像一张信用卡号码。如果是这种情况,您应该使用Luhn checksum
而不是简单的正则表达式。
答案 3 :(得分:0)
尝试:
if(preg_match('#^\d{4}-\d{4}-\d{4}-\d{4}$#',$string){}
答案 4 :(得分:0)
如果您需要匹配该确切格式,则模式为'~^\d{4}-\d{4}-\d{4}-\d{4}$~'
,或者您可以更一般地编写它:'^(\d+-)*\d+$'
(这将匹配11,11-11111 ......等等) ,