2017-04-24 28 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