2017-04-24 31 views
0

以下函數用於驗證數字。爲什麼它不工作只驗證數字,不會真正的條件

function strictlynumber(obj) 
{ 
    var numbers=/^[0-9]+$/; 
    if (obj!=numbers) 
    { 
     alert("please enter numbers only"); 
     return false; 
    } 
    return true; 
} 
+3

因爲語法。例如'if(!numbers.test(obj))'假設obj是一個字符串 - 閱讀[documentation](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ RegExp/test) – mplungjan

+0

[(MDN)JavaScript指南 - 正則表達式](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Regular_Expressions) – Andreas

回答

0

你的陳述obj!=numbers正則表達式/^[0-9]+$/比較obj

您需要執行與輸入的正則表達式等。

function strictlynumber(obj) 
{ 
    var numbers=/^[0-9]+$/; 
    if (!obj.match(numbers)) 
    { 
     alert("please enter numbers only"); 
     return false; 
    } 
    return true; 
} 

下面我們用一個string原型的match方法。

+0

已在評論中。問題應該被關閉爲「一個錯字型問題」 – mplungjan

1

您必須對照Regex測試該值。您不能簡單地將通過Regex對象傳遞的值與這種方式進行比較。請嘗試以下操作:

function strictlynumber(obj) { 
 
    var numbers=/^[0-9]+$/; 
 
    if (!numbers.test(obj)) { 
 
    alert("please enter numbers only"); 
 
    return false; 
 
    } 
 
    return true; 
 
} 
 
console.log(strictlynumber(5))

+0

我想投票,但爲什麼OP的代碼不起作用的一點解釋會很好。 – Touffy

+0

@Touffy,我添加了一些說明。希望能幫助OP。感謝您提醒我添加一些說明。 – Mamun

+0

已經在註釋中。問題應該被視爲「一個錯字型問題」 – mplungjan

1

使用regexObject.test(obj)方法,

在你的代碼obj!=numbers,是平等的測試中,將始終返回true。

修改後的代碼:

function strictlynumber(obj) 
{ 
    var numbers=/^[0-9]+$/; 
    if (!numbers.test(obj)) 
    { 
     alert("please enter numbers only"); 
     return false; 
    } 
    return true; 
} 

請按照下面的鏈接,對正則表達式的詳細信息:

https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions

+0

已經在評論中。問題應該被視爲「一個錯字型問題」 – mplungjan