【问题标题】:Fix JSLint bad escapement warning in RegEx修复正则表达式中的 JSLint 错误擒纵警告
【发布时间】:2011-10-12 05:39:59
【问题描述】:

我在名为 jquery.facebox.js 的第 3 方 jQuery 控件中有以下代码,JSLint 不喜欢该控件。这是 RegEx 中的错误转义错误。

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

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

【问题讨论】:

    标签: jquery regex escaping jslint


    【解决方案1】:

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

    要在 Javascript(和许多其他语言)的字符串中包含 \,您需要对其进行转义,因为它用于转义序列(如 \n)。所以要拥有\,您必须输入\\

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

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

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

    【讨论】:

      【解决方案2】:

      如果您将模式定义为使用 / / 作为附件的正则表达式对象,则不需要双重转义,因为它从来都不是字符串。

      【讨论】:

      • 当您动态生成正则表达式时,这不是一个选项,就像这里的情况一样。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 2011-07-24
      • 2021-11-14
      • 2021-08-03
      • 1970-01-01
      • 2013-01-15
      相关资源
      最近更新 更多