3

我正在尝试在茉莉花测试期间对字符串进行简单的 js 正则表达式模式匹配。此行按预期工作:

(/[^0-9\.]/g).test('$'); // true

但是,当正则表达式存储在变量中时,它会中断:

var NON_CURRENCY_VALUES = /[^0-9\.]/g; 
NON_CURRENCY_VALUES.test('$'); // false

true从控制台运行时,两者都按预期返回。但是,当从茉莉花测试内部运行时,它会中断。

plunker

4

2 回答 2

2

NON_CURRENCY_VALUES.test('$');对我来说是真实的。

但是,要将正则表达式存储在变量中,您也可以使用 RegExp:

var NON_CURRENCY_VALUES = new RegExp("[^0-9\.]", "g");
于 2013-10-09T16:13:32.850 回答
2

test有奇怪和无益的行为

在同一个全局正则表达式实例上多次调用的测试将超过上一次匹配。

您可以通过在尝试每次匹配之前进行设置来解决此问题,但要小心这种行为。RegExp.lastIndex = 0

http://plnkr.co/edit/cne6He?p=preview

于 2013-10-09T16:26:26.450 回答