检查数字和破折号

时间:2013-06-08 23:05:35

标签: javascript regex

我检查提交以验证某些字段,我只需要检查数字和破折号:

var numPattern = /^[0-9\-]+$/;
//UI field null check
if (ssn != (numPattern.test(ssn))) {
     displayError(Messages.ERR_TOPLEVEL);
}  
if (accntNoCL != (numPattern.test(accntNoCL))) {
    displayError(Messages.ERR_TOPLEVEL);
}

由于某种原因,这不起作用。任何想法为什么会这样?

3 个答案:

答案 0 :(得分:4)

regex.test()函数或您的numPattern.test()函数会返回布尔值true / false结果。

在您的代码if (ssn != numPattern.test(ssn))中,您正在检查结果是否等于您正在测试的值。

尝试将其更改为以下内容:

if (!numPattern.test(ssn)) {

答案 1 :(得分:2)

test是一个谓词,它返回一个布尔值:

var numPattern = /^[0-9\-]+$/;
numPattern.test("hello, world!"); // false
numPattern.test("123abc"); // false
numPattern.test("123"); // true
numPattern.test("12-3"); // true

答案 2 :(得分:1)

test返回一个布尔值,而不是匹配。只需使用

if (!numPattern.test(ssn)) {
    displayError(Messages.ERR_TOPLEVEL);
}  
if (!numPattern.test(accntNoCL)) {
    displayError(Messages.ERR_TOPLEVEL);
}

如果您需要匹配,请使用字符串的match函数或正则表达式对象的exec函数。