Changeset 2484

Show
Ignore:
Timestamp:
12/05/07 18:13:50 (5 years ago)
Author:
ykzts
Message:

lang/javascript/misc/isbn.js: ハイフン追加の際に正規表現を使うように

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lang/javascript/misc/isbn.js

    r2432 r2484  
    4949  self.addHyphen = function(isbn) { 
    5050    var len = isbn.length; 
    51     var ret = []; 
    52     var flag, group, publisher, title, checkdigit; 
    53     if(len == 13) { 
    54       flag = isbn.slice(0, 3); 
    55       ret.push(flag); 
    56     } else { 
    57       flag = ''; 
    58     } 
    59     group = isbn.slice(len-10, len-5); 
    60     if(group.slice(0, 1) < 8) 
    61       group = group.slice(0, 1); 
    62     else if(group.slice(0, 2) < 95) 
    63       group = group.slice(0, 2); 
    64     else if(group.slice(0, 3) < 995) 
    65       group = group.slice(0, 3); 
    66     else if(group.slice(0, 3) < 999) 
    67       group = group.slice(0, 4); 
    68     else 
    69       group = group.slice(0, 5); 
    70     ret.push(group); 
    71     publisher = isbn.slice(len-10+group.length, len-4+group.length); 
    72     if(publisher.slice(0, 2) < 20) 
    73       publisher = publisher.slice(0, 2); 
    74     else if(publisher.slice(0, 2) < 70) 
    75       publisher = publisher.slice(0, 3); 
    76     else if(publisher.slice(0, 2) < 85) 
    77       publisher = publisher.slice(0, 4); 
    78     else if(publisher.slice(0, 2) < 90) 
    79       publisher = publisher.slice(0, 5); 
    80     else if(publisher.slice(0, 2) < 95) 
    81       publisher = publisher.slice(0, 6); 
    82     else 
    83       publisher = publisher.slice(0, 7); 
    84     ret.push(publisher); 
    85     title = isbn.slice(flag.length+group.length+publisher.length, len-1); 
    86     ret.push(title) 
    87     checkdigit = isbn.slice(len-1); 
    88     ret.push(checkdigit); 
    89     return ret.join('-'); 
     51    var re = new RegExp([ 
     52      '^(97[89])?', 
     53      '([0-7]|8\\d|9[0-4]|9[5-8]\\d|99[0-4]|99[5-8]\\d|999\\d{2})', 
     54      '([01]\\d|[2-6]\\d{2}|7\\d{3}|8[0-4]\\d{2}|8[5-9]\\d{3}|9[0-4]\\d{4}|9[5-9]\\d{5})', 
     55      '(\\d{1,6})', 
     56      '([\\dX])$' 
     57    ].join('')); 
     58    return isbn.match(re).slice((len == 13) ? 1 : 2).join('-'); 
    9059  }; 
    9160