谁能解释这个正则表达式

时间:2013-02-12 17:01:54

标签: javascript regex

我遇到了john resig解释JavaScript继承的一篇文章。 http://ejohn.org/blog/simple-javascript-inheritance/

在这篇文章中有一个类实现代码,其中起始行有一个正则表达式

fnTest = /xyz/.test(function(){xyz;}) ? /\b_super\b/ : /.*/;

任何人都可以告诉我这是什么意思吗?

2 个答案:

答案 0 :(得分:3)

fnTest用于检查方法是否在某处使用_super。为此,该函数隐式转换为正则表达式的字符串(toString)和tested(在// Copy the properties over onto the new prototype中)。

然而,当调用toString方法时,并非所有实现都真正产生函数的源代码。因此,此测试会检查function(){xyz;}是否可以针对包含xyz进行测试 - 如果不是,则使用始终匹配的/.*/代替/\b_super\b/

答案 1 :(得分:1)

有两个正则表达式。第一个是/xyz/,用于测试函数(强制转换为字符串)是否与xyz匹配。确实如此。然后,返回两个regexen中的一个(在这种情况下,第一个是因为测试通过)。

其中第一个是单词边界,后跟_super,后跟另一个字边界,至少可以匹配"_super"" _super "word._super

第二个匹配零个或多个字符(即所有内容)。