这个regexp(rinlinejQuery)在jQuery中意味着什么?

时间:2012-07-06 17:26:44

标签: jquery

var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,

html: function( value ) {
        if ( value === undefined ) {
            return this[0] && this[0].nodeType === 1 ?
                this[0].innerHTML.replace(rinlinejQuery, "") :
                null;

        // See if we can take a shortcut and just use innerHTML
        }

是否与jQuery11="11"等代码相匹配?

为什么html()函数需要它?

1 个答案:

答案 0 :(得分:0)

好的,首先我们有jQuery\d+,它只是'jQuery'后跟一个或多个数字(\d[01-9]相同)。

然后我们在这里只有文字的=",所以我们匹配任何有'jQuery'的东西,然后是至少一个数字,然后'=''。

接下来,(...|...)构造是一个Or,因此它匹配垂直条|之前的表达式或它后面的表达式。在这种情况下,这些表达式是\d+null,因此我们的查询匹配任何由'jQuery'组成的字符串,至少一个数字,'=“',然后至少有一个数字,或字符串'null'。后跟一个"字面值。

作为表达式本身的一部分,唯一剩下的就是在左括号之后找到的?:通常情况下,正则表达式中括号中的任何内容都会被保存,以便您可以在替换字符串中使用$n引用它,其中n是一个数字,指的是哪个匹配您指的是。在这种情况下启动括号的?: 可以防止这种情况发生,以便括号可以用于对Or的选项进行分组而不会浪费时间或记忆来记住匹配的值

最后,正则表达式用正斜杠/括起来,而且这个正斜率有g开关,表示全局搜索。

我们所拥有的是'jQuery',一个或多个数字,'='',一个或多个数字'null','“'。

要回答你的第二个问题,是的,这个模式会匹配那个字符串。

我担心我不知道为什么jQuery的html函数需要从this[0].innerHTML删除那个特定的字符串(这是replace函数正在做的事情),但是基于它的注释看起来像他们使用字符串来测试innerHTML是否有效且功能正常(它不是在所有浏览器上)?