Completed
Push — master ( 9de2ae...02afd8 )
by Ronan
06:45
created

Uknin   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 25
Duplicated Lines 0 %

Coupling/Cohesion

Components 0
Dependencies 0

Importance

Changes 2
Bugs 0 Features 0
Metric Value
wmc 1
c 2
b 0
f 0
lcom 0
cbo 0
dl 0
loc 25
rs 10

1 Method

Rating   Name   Duplication   Size   Complexity  
A validate() 0 6 1
1
<?php
2
3
namespace IsoCodes;
4
5
/**
6
 * Class Uknin.
7
 */
8
class Uknin implements IsoCodeInterface
9
{
10
    /**
11
     * UK's National Insurance Number validator
12
     * Also known as NINO.
13
     *
14
     * @param string $uknin
15
     *
16
     * @author ronan.guilloux
17
     *
18
     * regexp must check        "/^[A-CEGHJ-NOPR-TW-Z]{1}[A-CEGHJ-NPR-TW-Z]{1}[0-9]{6}[A-D\s]{1}/i";
19
     * regexp must NOT check    "/(^GB)|(^BG)|(^NK)|(^KN)|(^TN)|(^NT)|(^ZZ).+/i";
20
     *
21
     * @see    http://www.hmrc.gov.uk/manuals/nimmanual/nim39110.htm
22
     * @see    http://stackoverflow.com/a/17929051/490589
23
     *
24
     * @return bool
25
     */
26
    public static function validate($uknin)
27
    {
28
        $regexpMustCheck = "/^(?!BG|GB|NK|KN|TN|NT|ZZ)[ABCEGHJ-PRSTW-Z][ABCEGHJ-NPRSTW-Z]\d{6}[A-D]$/";
29
30
        return (boolean) preg_match($regexpMustCheck, $uknin);
31
    }
32
}
33