1

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

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);
}

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

4

3 回答 3

4

regex.test()函数,或者numPattern.test()在您的情况下,返回一个布尔值true/false结果。

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

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

if (!numPattern.test(ssn)) {
于 2013-06-08T23:08:57.173 回答
2

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

var numPattern = /^[0-9\-]+$/;
numPattern.test("hello, world!"); // false
numPattern.test("123abc"); // false
numPattern.test("123"); // true
numPattern.test("12-3"); // true
于 2013-06-08T23:10:59.290 回答
1

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

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

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

于 2013-06-08T23:08:48.547 回答