Javascript/jQuery正则表达式代码问题

Javascript/jQuery正则表达式代码问题,javascript,jquery,regex,Javascript,Jquery,Regex,我正在与jqDock合作一个DotNetNuke项目。我运行了jQuery.noConflict并查看了jqDock.js文件,将所有的“$”更改为“jQuery”,尽管我认为没有必要这样做。 在这段代码中,我遇到了一个问题: altImage : function(){ var alt = jQuery(this).attr('alt'); return (alt && alt.match(/\.(gif|jpg|jpeg|png)$/i)) ? alt

我正在与jqDock合作一个DotNetNuke项目。我运行了jQuery.noConflict并查看了jqDock.js文件,将所有的“$”更改为“jQuery”,尽管我认为没有必要这样做。 在这段代码中,我遇到了一个问题:

altImage : function(){
      var alt = jQuery(this).attr('alt');
      return (alt && alt.match(/\.(gif|jpg|jpeg|png)$/i)) ? alt : false;

    } //end function altImage()
在正则表达式的末尾有一个块,上面写着$/i,My find/replace将其设置为jQuery。它破坏了程序。这是因为“$”符号没有与jQuery关联吗?它是正则表达式的一部分吗?如果是这样的话……它到底在说什么?

美元匹配字符串的结尾,因此它在这里与jQuery无关

可以找到一些关于regexp的阅读资料

本例中的$sign用作正则表达式的一部分,而不是作为对jQuery的调用,所以这就是出现问题的原因。它与执行正则表达式的字符串的结尾相匹配。

在代码中执行如此庞大的查找/替换操作时,请务必小心。您将正则表达式中使用的$符号更改为jQuery表达式,这是错误的。每次如此大规模的替换都应该明智地用其他字符串替换文档中的所有内容


阅读查看您在使用它时有哪些选项-甚至有一个选项让您仍然可以使用$进行jQuery。

编写jQuery插件的通常风格意味着不需要在整个插件中替换$。大多数插件都是这样编写的,即插件代码由一个自调用匿名函数包围,该函数在jQuery中传递参数$,以便$引用该函数中的jQuery对象。像这样

(function($) {

    // I can happily use $ here to refer to the jQuery object
    $.fn.myFunction ....

})(jQuery);
因此,在进行简单的查找/替换时要小心

正如其他人已经提到的,在正则表达式的上下文中,$用于匹配字符串的结尾

最后,在使用$.noConflict时,可以将jQuery对象分配给不同的别名,并在后续代码中使用该别名。比如说

var $j = $.noConflict();

// can use $j alias for jquery now
$j(document).ready(function($) { 
    // can use $j or $ for jQuery object inside this function as the 
    // jQuery object is passed in 
});