在RegEx中修复JSLint错误的转义警告

我在JSLint不喜欢的名为jquery.facebox.js的第三方jQuery控件中有以下代码。 这在RegEx中是一个糟糕的擒纵错误。

正则表达式对我来说就像Romulan,所以我看不出如何修复错误(这与RegEx中的句点字符有关):

var imageTypes = $.facebox.settings.imageTypes.join('|'); $.facebox.settings.imageTypesRegexp = new RegExp('\.(' + imageTypes + ')$', 'i'); 

'\之后添加第二个'\ 。 这是一个字符串问题,而不是正则表达式问题:-)

要在Javascript(以及许多其他语言)中使用字符串,您需要将其转义,因为它用于转义序列(如\n )。 所以要有一个\你必须把\\

在正则表达式\用于转义下一个字符,但这是另一个转义(未连接到“字符串”转义)。 所以它是\\.

更清楚一点:你希望你的字符串是“字面上的” \.(something 。为了让你需要通过放置另一个\来逃避\ (否则你的字符串将是.(因为\将逃脱. ,所以它不会做任何事情。如果你很好奇,正则表达式中的.表示任何字符,但如果你想搜索. (一个点),你必须逃避它,猜猜你用的是什么? \ : – )

如果有一天你必须用C#编程,在C#中你可以使用@"something"来解决这个问题。 @ disable在字符串中转义“扩展”。 所以@"\"是一个\

如果使用/ /作为附件将模式定义为Regex对象,则不需要双重转义,因为它永远不是字符串。