JSLint和JSHint(1.0.0版本前)在遇到一个正则表达式包含了多个连续的空格字符时会抛出"Spaces are hard to count. Use {a}"的错误。在下面这个例子中我们定义了一个正则表达式,用以匹配字符串"three spaces" (在两个单词之间有三个空格):
抛出这个错误是为了强调潜在的令人疑惑的代码片段。若不改变之,你的代码可以正常运行,但是这会让其他的开发者对此感到疑惑,特别是第一眼看到它的时候。
任何想要看看这个正则表达式到底要匹配的内容时,都会去数一数有多少个空格。但这显然是不必要的,因为有一种可选的语法能让这种正则表达式变得更清晰。为了解决这个错误,可以简单的使用重复操作符:
或者,你可以将你的代码修改为使用RegExp的构造函数而不是正则表达式字面量,这是因为JSLint和JSHint只会在使用一个字面量定义一个正则表达式的时候抛出错误: