Make cleanISBN less aggressive. Should yield fewer false-positives.
This commit is contained in:
parent
4b09137402
commit
524af03570
1 changed files with 5 additions and 8 deletions
|
@ -277,7 +277,10 @@ Zotero.Utilities = {
|
|||
* Return isbn if valid, otherwise return false
|
||||
*/
|
||||
"cleanISBN":function(/**String*/ isbn) {
|
||||
isbn = isbn.replace(/[^x\d]+/ig, '').toUpperCase();
|
||||
isbn = isbn.replace(/[^0-9a-z]+/ig, '').toUpperCase() //we only want to ignore punctuation, spaces
|
||||
.match(/(?:97[89][0-9]{10}|[0-9]{9}[0-9X])/); //13 digit or 10 digit
|
||||
if(!isbn) return false;
|
||||
isbn = isbn[0];
|
||||
|
||||
if(isbn.length == 10) {
|
||||
// Verify ISBN-10 checksum
|
||||
|
@ -292,17 +295,11 @@ Zotero.Utilities = {
|
|||
return (sum % 11 == 0) ? isbn : false;
|
||||
}
|
||||
|
||||
isbn = isbn.replace(/X/g, ''); //get rid of Xs
|
||||
|
||||
if(isbn.length == 13) {
|
||||
// ISBN-13 should start with 978 or 979 i.e. GS1 for book publishing industry
|
||||
var prefix = isbn.slice(0,3);
|
||||
if (prefix != "978" && prefix != "979") return false;
|
||||
|
||||
// Verify checksum
|
||||
var sum = 0;
|
||||
for (var i = 0; i < 12; i+=2) sum += isbn[i]*1; //to make sure it's int
|
||||
for (i = 1; i < 12; i+=2) sum += isbn[i]*3;
|
||||
for (var i = 1; i < 12; i+=2) sum += isbn[i]*3;
|
||||
sum += isbn[12]*1; //add the check digit
|
||||
|
||||
return (sum % 10 == 0 )? isbn : false;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue