[英]validation function doesn't work
我已經創建了一個Java腳本函數,它應該驗證輸入字符,該字符應包含10個字符並且可以包含字母數字字符,但是此函數不起作用,請幫幫我
function ValidateNIC(id) { var letters = /^[0-9a-zA-Z ]+$/; while(id.value.length==10) if(id.value.match(letters)) { return true; } else { alert('NIC must have alphanumeric characters only or should contain 10 charaters'); id.focus(); return false; } }
就您的代碼而言,如果長度不是10,則什么也不會發生。 更好的方法可能是:
if ((id.value.length == 10) && id.value.match(letters)) {
return true;
}
alert("NIC must ...");
id.focus();
return false;
您可以在Regex中放置所有驗證條件,例如^[a-zA-Z0-9]{10}$
。 請注意,正則表達式模式字符串中的附加{10}
僅在長度恰好為10時用於創建匹配項。
然后,您可以使用Regex
Object test
方法,該方法針對字符串測試regex模式,如果匹配成功,則返回true
,否則返回false。
使用正面和負面的測試用例,完整填寫以下經修改的代碼段。
function ValidateNIC(id){ var aphaPattern10 = /^[a-zA-Z0-9]{10}$/g; var result = aphaPattern10.test(id.value); if(!result){ alert('NIC must have alphanumeric characters only or should contain 10 charaters'); //id.focus(); } return result; } var testObjPass = { value : "012345678a"} console.log(ValidateNIC(testObjPass)); var testObjFail = { value : "012345678a21312"} console.log(ValidateNIC(testObjFail));
以下代碼檢查以下NIC必須僅包含字母數字字符或包含10個字符。 因此,如果只有10個字符,則不會發出其他警報,它將測試正則表達式。 考慮到id是具有鍵值的對象
function ValidateNIC(id)
{
var letters = /^[0-9a-zA-Z ]+$/;
if(id.value.length!==10){
if(id.value.match(letters))
{
return true;
}
else
{
alert('NIC must have alphanumeric characters only or should contain 10 charaters');
id.focus();
return false;
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.