2011-07-09 36 views
0

你好,我有一個關於javascript表單驗證和正則表達式的問題。以下是我使用的代碼。我試圖驗證地址是否有字母表中的數字和字母。這段代碼是用於實驗的,不需要做任何超安全的驗證。正則表達式不起作用的Javascript表單驗證郵寄地址!

問題是下面的代碼似乎不起作用。無論我做什麼,警報框都告訴我必須輸入一個有效的地址。哪裏不對。是不是正則表達式搜索值並發現錯誤?即使我輸入123 Sky Rd這樣的普通地址。它仍然輸出請輸入一個有效的地址。

我希望我的問題很清楚。下面是真正闡明發生了什麼的代碼。爲什麼這是無效的?

if (document.customerInfo.address.value == ""){ 
     msg += "Please enter a valid address\n"; 
     } 
    else if (document.customerInfo.address.value.match(/[0-9]/) != true) 
      {msg += "Please enter a valid address\n";} 
    else (document.customerInfo.address.value.match(/[abc]/) != true) 
      {msg += "Please enter a valid address\n";} 

回答

2

這段代碼是錯在許多方面。首先,match()不返回true或false。它返回null或一組匹配。其次,您的正則表達式正在查找所有數字的字符串或所有字符的字符串,並且您有兩個字符串(包括空格)。

你真的想要測試什麼?

/[a-zA-Z0-9] + /的一個正則表達式將允許數字,字母和空格,但我不知道爲什麼你甚至要檢查它。地址不是真的可以用這種方式檢查的東西。您可以確保該字段不是空的,但地址可以採用各種形式,包括像#100中的#這樣的字符。我認爲你所能做的只是檢查它是否不是空的。

+0

我相信你是對的,它不會返回一個真正的。這將是我的問題的來源。感謝您的信息! – allencoded

+0

正則表達式是一個很好的開始,但如果你能驗證有效性的地址和繞過正則表達式,你會這樣做嗎?有幾種免費的方法可以做到這一點,但SmartyStreets(我與之合作的公司)有一個叫做LiveAddress的地址,它比正則表達式更可靠/更實用,因爲@ jfriend00說過。 – Matt

0

嘗試([0-9])([a-z])

if (document.customerInfo.address.value == ""){ 
     msg += "Please enter a valid address\n"; 
     } 
    else if (document.customerInfo.address.value.match(/([0-9])/) != true) 
      {msg += "Please enter a valid address\n";} 
    else (document.customerInfo.address.value.match(/([a-z])/) != true) 
      {msg += "Please enter a valid address\n";} 
0

試試這個正則表達式:

if (document.customerInfo.address.value == ""){ 
    msg += "Please enter a valid address\n"; 
} 
else if (document.customerInfo.address.value.match/[a-zA-Z0-9 ]+/) == null) { 
    msg += "Please enter a valid address\n"; 
} 

您是匹配的只有一個字符,只有小寫[a-z]。 '+'指定一個或多個。

+0

如果(document.customerInfo.address.value == 「」) \t {MSG + = 「請輸入一個有效地址\ n」;} 否則如果(document.customerInfo.address.value.match(/ [ (msg + =「請輸入一個有效的地址\ n」;} – allencoded

+0

我放在上面,得到同樣的問題 – allencoded

+0

'(/[az] + [AZ] + [0-9] + /'與'/ [a-zA-Z0-9] + /'是不一樣的。試試我的更新回答 – Mrchief

0

你有,如果,否則,否則。您在if語句的所有部分添加了「請輸入有效地址」,即使在其他語句中也是如此。

更改代碼是

if (document.customerInfo.address.value == ""){ 
    msg += "Please enter a valid address\n"; 
    } 
else if (document.customerInfo.address.value.match(/[0-9]/) != true) 
     {msg += "Please enter a valid address\n";} 
else if (document.customerInfo.address.value.match(/[abc]/) != true) 
     {msg += "Please enter a valid address\n";} 
相關問題