jquery说: http://docs.jquery.com/JQuery_Core_Style_Guidelines#RegExp
应该完成所有RegExp操作 使用.test()和.exec()。 “string”.match()不再使用。
为什么不建议使用.match()?
答案 0 :(得分:3)
考虑:
var Str = 'Here are some words.';
var myRegex = /(\w+)/ig;
。
var aWordList = Str.match (myRegex);
var iLen = aWordList.length;
for (var K=0; K < iLen; K++)
{
console.log ('Word: ', K, ' --> ', aWordList[K]);
}
var aWordList;
var K = 0;
RegExp.lastindex = 0; //-- If this is omitted, nasty side-effects may occur.
while ( (aWordList = myRegex.exec (Str)) != null)
{
console.log ('Word: ', K++, ' --> ', aWordList[0]);
}
看看exec()
有多简单?
(我也不是。)
根据我的图表完全支持这两个功能(match()
结果在IE上也有input
成员除外)。
我无法找到jQuery的人们做出决定的理由。
答案 1 :(得分:1)
这是一种风格的东西。
最大的区别是match
被调用如下:
string.match(regex)
test
和exec
的调用如下:
regex.exec(string)
答案 2 :(得分:1)
exec
的一个主要好处是它返回捕获组。例如:
var s = "123456789"
var regex = /.(.)(..)/g;
匹配
s.match(regex);
> [1234, 5678]
EXEC:
regex.exec(s);
> [1234, 2, 34]
regex.exec(s);
> [5678, 6, 78]
查看您发布的编码标准;该文件包含许多看似随意的指导方针。显然,它的目的主要是实现一致性,因此有可能exec
是首选,因为它具有更多功能 - 可以在某些场合使用,因此它们也可以使用它。
就个人而言,如果没有解释,我并不关心准则,所以你问过这是一件好事。在许多情况下,它会导致基于教条或迷信的编程。