我正在尝试验证一个包含数字的字符串,其中每四个数字都用连字符分隔,例如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…等等),