正确测试整数或N / A正则表达式

时间:2017-01-23 20:18:05

标签: javascript regex

我正在尝试测试正则表达式是一个整数还是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 $ /

3 个答案:

答案 0 :(得分:3)

使用以下正则表达式:

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

必须使用括号分组,以便^$不会附加到特定的替代方案。最后的i修饰符使其不区分大小写,因此您不必列出na的所有不同大小写组合。如果你想让它分开替代品,你就不应该逃脱|

答案 1 :(得分:1)

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

\d

答案 2 :(得分:0)

以防您想要允许未修剪的字符串:

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