`
epy
  • 浏览: 326064 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

如何用正则表达式定位JS代码中尾部有多余逗号的对象?

阅读更多
   昨天跟同事一起检查IE下的JS错误,搞了几个小时,考虑了很多种可能,最后偶然发现问题的根源在于ContactList.js载入了ContactDisplay.js,而ContactDisplay.js中在postCreate函数里有这样一段代码
dojo.create("img", {
   src: "/html/themes/classic/images/contacts_pending.png",
}, this.pendingImg);
其中作为第二个参数的对象中多了一个逗号。

    这样的问题其实并不少见,对于比较简单的代码,比如:
var tt={
   name:"test",
   ff:"fdff”,
};
   Eclipse的JavaScript Editor会给出错误提示”Syntax error on token ",", LiteralField expected after this token”;当代码比较复杂,嵌套层次比较多时,如前面ContactDisplay.js中的情况,Eclipse的JavaScript Editor就没有给出提示。

    好在Eclipse中有用正则表达式进行搜索的功能,今天上午研究了一下,写了正则表达式来定位JS代码中尾部有多余逗号的对象。
    先介绍几个匹配注释的正则表达式:
用于匹配JS中的行注释: //[^\n]*\n
用于匹配JS中的块注释: /\*(.|\n)*?\*/
用于匹配JS中的任意注释: (//[^\n]*\n)|(/\*(.|\n)*?\*/)

     要匹配JS中尾部有多余逗号的对象,可用正则表达式:
          ,((\s*)|(//[^\n]*\n)|(/\*(.|\n)*?\*/))*}     
其中考虑了’,’和’}’之间有空白字符、行注释和块注释的情况。在Eclipse中用上面的正则表达式对较小的文件进行搜索是可以的,但对较长的文件搜索时,可能会报告"Find pattern too complex",非常郁闷。

    下面是几种稍微简单的情况,
只考虑,和}之间有空白字符的情况: ,\s*}
只考虑,和}之间有空白字符和行注释的情况: ,((\s*)|(//[^\n]*\n))*}
只考虑,和}之间有空白字符和块注释的情况: ,((\s*)|(/\*(.|\n)*?\*/))*}

    一种可行的解决方法是:先把JS中的块注释清除(用正则表达式替换功能将/\*(.|\n)*?\*/替换为空),然后只考虑,和}之间有空白字符和行注释的情况,即用 ,((\s*)|(//[^\n]*\n))*}  进行查找。

    对于有些JS在FF中正常运行,在IE下有错误的情况,如果JS文件比较长,用肉眼找起来很费事,并且怀疑是哪个对象多了个逗号的缘故,不妨在Eclipse打开源文件,用上面的方法搜搜看,也许能有意外发现哦。

2
0
分享到:
评论

相关推荐

    JavaScript 数据校验 正则表达式 示例代码

    JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码JavaScript 数据校验 正则表达式 示例代码...

    PB实现的正则表达式

    例如,你可以创建一个正则表达式对象,然后使用它来测试字符串是否符合特定模式,或者从字符串中提取匹配的子串。 在实际应用中,使用正则表达式可能涉及到以下步骤: 1. 创建正则表达式:定义你要匹配的模式,例如...

    pb 使用正则表达式源码pbregexp

    标题中的“pb 使用正则表达式源码pbregexp”指的是在PowerBuilder(简称pb)环境中,利用名为“pbregexp”的正则表达式组件来实现源代码级别的正则表达式操作。PowerBuilder是一款流行的可视化的、面向对象的软件...

    正则表达式转换工具

    - 文件搜索:在代码编辑器中,使用正则表达式快速查找和替换特定模式的文本。 - 数据清洗:在数据预处理阶段,正则表达式可以帮助剔除无关字符,整理数据格式。 - 网页抓取:在网络爬虫中,正则表达式用于提取...

    正则表达式在Java代码中的使用

    这篇博客将深入探讨正则表达式在Java代码中的应用。 首先,创建一个正则表达式需要使用Pattern类。Pattern类的compile方法接受一个字符串参数,该字符串就是正则表达式。例如,创建一个匹配数字的正则表达式: ```...

    VC、VC++,MFC 正则表达式类库

    在实际项目中,你需要将这个头文件包含到你的源代码中,以便使用MFC提供的正则表达式功能。 总的来说,MFC的正则表达式类库提供了一个高效且易于使用的接口,使得VC++开发者能够方便地在Windows应用程序中处理复杂...

    Java使用正则表达式提取XML节点内容的方法示例

    Java中提供了对正则表达式的支持,使得开发者可以使用正则表达式来匹配和提取字符串中的内容。 二、XML节点内容提取方法 在Java中,可以使用正则表达式来提取XML节点内容。下面是一个简单的示例: ```java public ...

    vb正则表达式实例(正则表达式测试程序)

    下面将详细探讨正则表达式的基本概念、在VB.NET中的应用以及如何使用它们进行文本匹配。 1. 正则表达式基础 - **模式匹配**:正则表达式是一种特殊的字符序列,用于定义字符串的搜索模式。 - **元字符**:如 `.`...

    qt使用正则表达式限制lineEdit的输入,对正则表达式进行了封装,可以直接引入,工程编译正常

    在使用封装的正则表达式模块时,记得引入相关的头文件并实例化对象,然后在适当的地方调用验证方法。 总之,通过Qt的正则表达式功能,我们可以实现对lineEdit输入的强大控制,提供更友好的用户交互体验。这个项目...

    Lucene 使用正则表达式

    ### Lucene 使用正则表达式 #### 知识点概览 1. **Lucene简介** 2. **正则表达式(regex)在Lucene中的应用** 3. **regexQuery详解** 4. **示例代码解析** 5. **索引创建与查询流程** 6. **正则表达式的语法** #### ...

    易语言正则表达式类匹配中文

    1. **创建**:创建正则表达式对象是使用正则表达式的第一步。在易语言中,这通常涉及到初始化一个类实例,并传入相应的正则表达式字符串。例如,`创建正则表达式`函数可以用来创建一个正则表达式对象,用于后续的...

    正则表达式测试工具C#版(src)

    - 调试技巧:源码中可能会有调试正则表达式的辅助逻辑,帮助开发者更好地理解和调试自己的正则表达式。 通过深入研究这个C#版的正则表达式测试工具源码,开发者不仅可以巩固正则表达式的基础知识,还可以提升在C#...

    正则表达式学习资料以及练习项目代码很多

    - **编译正则表达式**:使用`re.compile()`函数将正则表达式编译为`Pattern`对象,提高匹配速度。 - **模式方法**:`Pattern`对象提供`match()`、`search()`等方法进行匹配,以及`sub()`、`split()`等方法进行替换...

    C语言正则表达式库

    在C语言中,使用正则表达式库可以实现复杂的文本搜索、替换和分析操作,而无需编写复杂的字符串处理代码。PCRE库提供了丰富的API接口,包括编译正则表达式、执行匹配、获取匹配结果等。 PCRE库的特性包括: 1. **...

    正则表达式列举 代码 项目中直接使用

    在项目中直接使用正则表达式可以极大地提高代码的效率和可读性。以下是对给定文件中的正则表达式知识点的详细解析: ### 1. 匹配中文字符 正则表达式:`[\u4e00-\u9fa5]` 此表达式用于匹配中文字符,其中`\u4e00`...

    神器验证正则表达式去除复制代码前的序号

    "神器验证正则表达式去除复制代码前的序号"这一主题,主要涉及如何利用正则表达式来解决在编程或文本编辑时遇到的一个常见问题:代码块中的序号。 当我们在网页、文档或者代码仓库中复制代码段时,有时这些代码段会...

    java正则表达式.zip

    Java正则表达式是Java编程语言中用于处理字符串的强大工具,它基于模式匹配的概念,能够高效地进行文本搜索、替换和解析。在Java中,正则表达式主要通过`java.util.regex`包来实现,提供了Pattern和Matcher两个核心...

    正则表达式必知必会v_1.0.pdf

    在正则表达式中,可以使用字符集合([xxx])来匹配某些字符中的一个字符。字符集合可以通过显示声明每一个字符,或者通过连字符(-)来指定一个范围的字符。同时,字符集合还可以通过^来声明一个取反的字符集合,即...

    使用正则表达式验证一年的12个月份

    在提供的压缩包文件"076"中,可能包含了用于演示或练习这个正则表达式的代码或数据。通过学习和理解这个例子,开发者可以加深对正则表达式的掌握,并提升在实际项目中的应用能力。无论是在网页表单验证、服务器端...

    正则表达式验证工具,正则表达式校验工具

    1、首先把测试用代码放入源码中 2、编写正则表达式 3、选择排除规则,一、按正则表达式把源码中符合正则的删除;二、按正则表达式把源码中符合正则的找出;三、符合正则表达式的显示True 4、选择是否不区分大小...

Global site tag (gtag.js) - Google Analytics