【问题标题】:Nodejs invalid regexpNodejs无效的正则表达式
【发布时间】:2014-07-23 04:57:57
【问题描述】:

我运行以下命令:

node_modules/.bin/jsdoc -r --destination /home/user/public_html/jsdoc-meta/ node_modules/jsdoc/

这就是我得到的。我没有发现正则表达式的错误:

/home/user/node_modules/jsdoc/lib/jsdoc/name.js:77
    var regexp = new RegExp('^' + memberof.toString() + REGEXP_SCOPE_PUNC);
                 ^
SyntaxError: Invalid regular expression: /^harmonyTestFixture.ES6 Template Strings.`\u{000042}\u0042\x42\u0\102\A`[~,#,.]/: Unterminated character class
    at new RegExp (<anonymous>)
    at nameIsLongname (/home/user/node_modules/jsdoc/lib/jsdoc/name.js:77:18)
    at Object.exports.resolve (/home/user/node_modules/jsdoc/lib/jsdoc/name.js:114:21)
    at Doclet.postProcess (/home/user/node_modules/jsdoc/lib/jsdoc/doclet.js:171:20)
    at newSymbolDoclet (/home/user/node_modules/jsdoc/lib/jsdoc/src/handlers.js:190:23)
    at null.<anonymous> (/home/user/node_modules/jsdoc/lib/jsdoc/src/handlers.js:226:29)
    at EventEmitter.emit (events.js:98:17)
    at Visitor.visitNode (/home/user/node_modules/jsdoc/lib/jsdoc/src/visitor.js:283:16)
    at Visitor.visit (/home/user/node_modules/jsdoc/lib/jsdoc/src/visitor.js:177:27)
    at Walker.recurse (/home/user/node_modules/jsdoc/lib/jsdoc/src/walker.js:533:27)

【问题讨论】:

  • 应该是^harmonyTestFixture.ES6 Template Strings.\\u{000042}\u0042\x42\\u0\102\A[~,#,.]
  • 转义 \u 字符。你想达到什么目标?

标签: javascript regex node.js jsdoc jsdoc3


【解决方案1】:

Node(或者更确切地说是 V8)尝试将其解析为 UTF8 转义序列:

/^harmonyTestFixture.ES6 Template Strings.`\u{000042}\u0042\x42\u0\102\A`[~,#,.]/
                                                                ^^^^^^

但是,由于\u0102 之间的反斜杠缺少字符,因此出现错误消息 (Unterminated character class)。根据您要实现的目标,您可以删除该反斜杠:

/^harmonyTestFixture.ES6 Template Strings.`\u{000042}\u0042\x42\u0102\A`[~,#,.]/
                                                                  ^

或转义反斜杠:

/^harmonyTestFixture.ES6 Template Strings.`\u\{000042\}\u0042\x42\u0\\102\A`[~,#,.]/
                                                                    ^^

【讨论】:

  • 我搜索了源代码并找到了'`\\u{000042}\\u0042\\x42\\u0\\102\\A`',这很有意义。也许这是一个错误,所有的反斜杠都需要双重转义?
  • 我不知道为什么这些在 Jsdoc 中,但我终于注释掉了测试并且通过了。
  • 很高兴你能修复它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2011-08-09
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 2018-10-21
  • 1970-01-01
相关资源
最近更新 更多