ISBN numarası kontrol ederken yardımcı olabilecek bir kaç not, teori ve pratik;
- ISBN numaraları 10 hanelidir, tamamen nümerik olmayıp son hane "X" karakteri olabilir.
- Eğer ISBN numarlarını integer olarak tutmak istiyorsanız son hanesi X olanları yazmayın ve ondan sonra 1000000000 küçük olanların sonuna gösterirken "X" ekleyin.
- Eğerki çıktıyı "-" tireler ile gösterecekseniz ki aslında bir ayraç kullanmalısınız o zaman integer tutamayacaksınız. Yada 4 grupta (Group Identifier, Publisher Prefix, Title Identifier, Check Digit) tutmanız gerekli. Unutmayın ki Check Digit tek hane ve karakter olarak sadece "X" olabilir. Integer tutacaksanız "X" yerine 10 kullanabilirsiniz.
- 10 haneyi 10-1 arası ağırlıklar ile çarpıp topladığınızda 11' e tam olarak bölünebilir bir sayı çıkmalıdır. ( ISBN 4.4. Check digit ) X' i 10 olarak almalısınız.
RegEx ile ISBN tanıma;
((?=.{13})\d{1,5}([- ])\d{1,7}\1\d{1,6}\1(\d|X)|\d{9}(\d|X))
Hem tire/hypen ("-") ile hemde birleşik yazılmış ISBN numarlarını tanıyabilir. RegExLib' deki bir örneği geliştirdim.
Matematiksel olarak kontrol etme;
Örnek VB.NET fonksiyonu
ISBN standartları hakkında daha fazla bilgi;
Structure of ISBN
