2010-07-26 60 views
3

我正在使用ACH支付處理器,並想知道我是否可以根據一些規則來限制駕駛執照字段。對此有何想法?我只能假設爲數字或其他任何東西更像SSN驗證駕駛執照號碼?

感謝

+1

肯定的:這個網站應該讓你的駕駛執照號碼開始瓦特/驗證信息的關鍵位缺失 - 在哪個國家?如果在美國,在哪個州(S)?在美國,DL#的狀態似乎因州而異。 – 2010-07-26 19:27:28

+0

美國和加拿大.. thx球員 – Quotient 2010-07-26 19:30:55

+0

我只會這樣做,如果我不得不這樣做。我對美國和加拿大的駕駛執照編號計劃一無所知,但我希望他們中的任何一個或全部都會偶爾發生變化。你可能會遇到維修頭痛。 – 2010-07-26 19:36:14

回答

7

ADR State License Formats(PDF)。

+2

哈哈,我很想看到任何人試圖正則表達式。電子郵件驗證看起來更糟糕。 – Anders 2010-07-26 19:31:34

+1

@Anders,你的意思是那50個左右的正則表達式,對吧?爲了進行有意義的驗證,您必須爲每個編號方案分別設置一個模式,並將模式與發行人進行匹配。 – 2010-07-26 19:40:12

+1

@John M Gant,指的是http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html,當然是的。 – Anders 2010-07-26 19:47:24

3

我想出了這樣一個項目我工作...

function utilities() { 
function validateLicense(stateCode, licenseNumber) { 
    // from http://www.uiia.org/documents/license_guidelines_08.pdf 
    var oneToSevenNumeric = /^[0-9]{1,7}$/; 
    var oneAlpha = /(.*[A-Za-z]){1}/; 
    var oneAlphaPlusSeven = /^.[0-9]{7}$/; 
    var twoAlpha = /(.*[A-Za-z]){2}/; 
    var alphaPlusSixNumeric = /(.*[0-9]){6}$/; 
    var threeToFiveNumeric = /(.*[0-9]){3,5}$/; 
    var fiveToNineNumeric = /(.*[0-9]){5,9}/; 
    var sixNumeric = /^[0-9]{6}$/; 
    var sevenNumeric = /^[0-9]{7}$/; 
    var sevenToNineNumeric = /^[0-9]{7,9}$/; 
    var eightAreNumbers = /(.*[0-9]){8}/; 
    var nineNumeric = /^[0-9]{9}$/; 
    var nineAlphaChars = /^[A-Za-z0-9]{9}$/; 
    var tenNumeric = /^[0-9]{10}$/; 
    var elevenNumeric = /^.[0-9]{11}$/; 
    var twelveNumeric = /^.[0-9]{12}$/; 
    var hPlusEight = /([H][0-9]{8})$/; 
    var sevenPlusX = /([H][0-9]{7}X)$/; 

    if (stateCode == undefined || licenseNumber == undefined) { 
     return ""; 
    } 
    if (stateCode == 'AK') { 
     return validateExpression(oneToSevenNumeric, licenseNumber, "Must be 1-7 numeric"); 
    } 
    if (stateCode == 'AL') { 
     return validateExpression(sevenNumeric, licenseNumber, "Must be 7 numeric"); 
    } 
    if (stateCode == 'AR' || stateCode == 'MS') { 
     return validateExpression(nineNumeric, licenseNumber, "Must be 9 numeric"); 
    } 
    if (stateCode == 'AZ') { 
     if (nineNumeric.test(licenseNumber) == true) { 
      return ""; 
     } 
     if (oneAlpha.test(licenseNumber) && eightAreNumbers.test(licenseNumber)) { 
      return ""; 
     } 
     if (twoAlpha.test(licenseNumber) && threeToFiveNumeric.test(licenseNumber) && licenseNumber.length < 8) { 
      return ""; 
     } 
     return "Must be 1 Alphabetic, 8 Numeric; or 2 Alphabetic, 3-6 Numeric; or 9 Numeric"; 
    } 
    if (stateCode == 'CA') { 

     if (oneAlpha.test(licenseNumber) && oneAlphaPlusSeven.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must be 1 alpha and 7 numeric"; 
    } 
    if (stateCode == 'CO' || stateCode == 'CN' || stateCode == 'CT') { 
     return validateExpression(nineNumeric, licenseNumber, "Must be 9 numeric"); 
    } 
    if (stateCode == 'DC') { 
     if (sevenNumeric.test(licenseNumber) || nineNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must be 7 - 9 numeric"; 
    } 
    if (stateCode == 'DE') { 
     if (oneToSevenNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must be 1 - 7 numeric"; 
    } 
    if (stateCode == 'FL') { 
     if (oneAlpha.test(licenseNumber) && twelveNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must be 1 alpha, 12 numeric"; 
    } 
    if (stateCode == 'GA') { 
     if (sevenToNineNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must be 7 - 9 numeric"; 
    } 
    if (stateCode == 'HI') { 
     if (nineNumeric.test(licenseNumber) || hPlusEight.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must 'H' + 8 numeric; 9 numeric"; 
    } 
    if (stateCode == 'ID') { 
     if (nineNumeric.test(licenseNumber) || sixNumeric.test(licenseNumber) || (twoAlpha.test(licenseNumber) && alphaPlusSixNumeric.test(licenseNumber))) { 
      return ""; 
     } 
     return "Must 9 numbers or 6 numbers; or 2 char, 6 numbers "; 
    } 

    if (stateCode == 'IL') { 
     if (oneAlpha.test(licenseNumber) && elevenNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must 1 character 11 numbers"; 
    } 
    if (stateCode == 'IN') { 
     if (tenNumeric.test(licenseNumber) || nineNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must be 9-10 numbers"; 
    } 
    if (stateCode == 'IA') { 
     if (nineAlphaChars.test(licenseNumber) || nineNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must be 9 alpha numbers"; 
    } 
    if (stateCode == 'KS' || stateCode == 'KY') { 
     if (nineNumeric.test(licenseNumber) || (oneAlpha.test(licenseNumber) && eightAreNumbers.test(licenseNumber) && licenseNumber.length == 9)) { 
      return ""; 
     } 
     return "Must be 1 alpha and 8 numeric"; 
    } 
    if (stateCode == 'LA') { 
     if (nineNumeric.test(licenseNumber) == true) { 
      return ""; 
     } 
     return "Must be 9 numeric"; 
    } 
    if (stateCode == 'ME') { 
     if (sevenNumeric.test(licenseNumber) || sevenPlusX.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must be 7 numeric"; 
    } 
    if (stateCode == 'MD' || stateCode == 'MI' || stateCode == 'MN') { 
     if (oneAlpha.test(licenseNumber) && twelveNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "1 Alphabetic, 12 Numeric"; 
    } 
    if (stateCode == 'MA') { 
     if ((oneAlpha.test(licenseNumber) && eightAreNumbers.test(licenseNumber) && licenseNumber.length == 9) || nineNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "Must be 1 alpha, 8 numeric; 9 numeric"; 
    } 

    if (stateCode == 'MO') { 
     if ((oneAlpha.test(licenseNumber) && fiveToNineNumeric.test(licenseNumber) && licenseNumber.length < 11) || nineNumeric.test(licenseNumber)) { 
      return ""; 
     } 
     return "1 alpha - 5-9 Numeric or 9 numeric"; 
    } 
    return ""; 
} 

function validateExpression(expression, value, error) { 
    if (expression.test(value) == true) { 
     return ""; 
    } 
    return error; 
} 

return { 
    validateLicense: validateLicense, 
    validateExpression: validateExpression 
}; 

}