2017-01-23 91 views
0

我試圖測試是否正則表達式是整數或N/A,但是我不能讓我的功能正確執行。它總是顯示錯誤信息。正確測試整數或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 $/

+1

發佈一些有效和無效的字符串的示例。 –

+1

使用'i'修飾符來區分不區分大小寫的匹配,而不是列出所有不同的組合。 – Barmar

+0

@Barmar可以顯示一個例子,請 –

回答

3

使用以下正則表達式:

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

的用括號括住是必要的,這樣^$不會附着於特定的替代品。該i修改在最後使得它不區分大小寫的,所以你不必列出na各種不同情況下的組合。如果你想分開替代品,你不應該逃脫|

+0

謝謝!這真的有幫助! –

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

\d代表數字。

+0

的'^ \ d {1,10} | N \/A $'是不正確,因爲它會匹配'1cvhhy ---'和'fvuit785#^%$^N /串了'。 –

+0

@WiktorStribiżew只是修復它。 –

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 
+0

歡迎來到SO。我認爲你的目標是做一個代碼片段。瞭解如何做到這一點[這裏](https://stackoverflow.blog/2014/09/introducing-runnable-javascript-css-and-html-code-snippets/) –

+0

這是沒有,但我會記住這記住,謝謝。 – bosscube