簡體   English   中英

Javascript 使用正則表達式的表單驗證郵寄地址不起作用!

[英]Javascript form validation mailing address with regular expression not working!

您好,我對 javascript 表單驗證和正則表達式有疑問。 下面是我使用的代碼。 我正在嘗試驗證地址是否有數字和字母表中的字母。 此代碼用於實驗,不需要進行任何超安全驗證。

問題是下面的代碼似乎不起作用。 無論我做什么,警報框都會告訴我我必須輸入一個有效地址。 怎么了。 正則表達式不是搜索值發現false嗎? 即使我輸入像 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";}

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

你真正想測試什么?

/[a-zA-Z0-9 ]+/ 的單個正則表達式將允許數字、字母和空格,但我不知道你為什么還要檢查它。 地址不是真正可以通過這種方式檢查的東西。 您可以確保該字段不為空,但地址可以采用各種 forms,包括像 Suite #100 中的 # 這樣的字符。 我認為您在這里真正可以做的就是檢查它是否為空。

嘗試([0-9])([az])

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";}

試試這個正則表達式:

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";
}

您僅匹配一個字符且僅匹配小寫[az] '+' 指定一個或多個。

你有如果,否則如果,否則。 您在 if 語句的所有部分中附加了“請輸入有效地址”,即使在 else 中也是如此。

將代碼更改為

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";}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM