1
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()函数中需要它?

4

1 回答 1

0

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

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

接下来,(...|...)构造是一个 Or,因此它匹配竖线之前的表达式或竖线|之后的表达式。在这种情况下,这些表达式是\d+and null,因此我们的查询匹配任何包含“jQuery”、至少一个数字、“=”、然后是至少一个数字或字符串“null”的字符串。接下来是按"字面意思。

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

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

所以我们有'jQuery',一个或多个数字,'="',一个或多个数字'null','"'。

要回答您的第二个问题,是的,此模式将匹配该字符串。

恐怕我不知道为什么 jQuery 的 html 函数需要从中删除该特定字符串this[0].innerHTML(这是该replace函数正在执行的操作),但根据评论,看起来他们正在使用该字符串来测试是否innerHTML有效并且功能(不是在所有浏览器上)?

于 2012-07-06T17:57:54.323 回答