簡體   English   中英

正確測試整數或N / A正則表達式

[英]Correctly test Whole Number or N/A Regular expression

我正在嘗試測試正則表達式是整數還是N / A,但是我無法正常執行函數。 它總是顯示錯誤消息。

function WholeNumberWithNA(field1) {
$("input:text[id*='" + field1 + "']").keyup(function () {
    var input = $(this);
    var re = /^[0-9]{1,10}\|N\/A\|n\/a|N\/a|n\/A$/;
    var errormsg = "Whole Number or N/A only";
    var is_email = re.test(input.val());
    if (is_email) { input.removeClass("invalid").addClass("valid"); myFunction(event, errormsg); }
    else { input.removeClass("valid").addClass("invalid"); myFunction(event, errormsg); }
});

}

function myFunction(event, errormsg) {
    var element = $(event.currentTarget);
    var valid = element.hasClass("valid");
    var temp = event.currentTarget.parentElement;
    var error_element = $(".ValidatorIndicator", event.currentTarget.parentElement);
    if (!valid) { error_element.text(errormsg); error_free = false; }
    else { error_element.text(""); }
}

我想我意識到了自己的錯誤。 我擺脫了“ |”前面的反斜杠 而且有效。 正確的表達式:/ ^ [0-9] {1,10} | N / A | n / a | N / a | n / A $ /

使用以下正則表達式:

/^(?:\d{1,10}|n\/a)$/i

必須使用括號將分組,以便^$不會附加到特定的替代項上。 最后的i修飾符使其不區分大小寫,因此您不必列出na所有不同大小寫組合。 而且你不應該逃脫| 如果您希望將其分開。

var re = /^(\d{1,10}|n\/a)$/i;

\\d為數字。

萬一您想允許未修飾的字符串:

var pattern = /^\s*(\d{1,10}|n\/a)\s*$/i;

console.log(pattern.test("123456"));   // true
console.log(pattern.test("0.123456")); // false
console.log(pattern.test("n/A"));      // true
console.log(pattern.test("."));        // false
console.log(pattern.test("   7  "));   // true

暫無
暫無

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

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