Nodejs 正则表达式错误:“无效的正则表达式:没有什么可重复的”
Nodejs regexp error: "Invalid regular expression: nothing to repeat"
所以我有这个正则表达式:
(?:[ 't]*)?(?:'/'/|'/'*)[ 't]*#exclude[ 't]*([^'n*]*)[ 't]*(?:'*'/)?(?:[ 't]*['r'n]+)?((?:.|'n|'r)*?)(?:[ 't]*)?(?:'/'/|'/'*)[ 't]*#endexclude[ 't]*(?:'*'/)?(?:[ 't]*['r'n]+)?
它应该匹配看起来像这样的任何内容:
/* #exclude */
hurdur = somerandomtextorcode;
/* #endexclude */
我正在 https://regex101.com/(https://regex101.com/r/eA5oK9/1)等工具中尝试使用这种正则表达式,它只是简单地工作,没有错误。
但是,在nodejs环境中,我收到此错误,我真的不知道如何解决:
Warning: Invalid regular expression: /(?:[ ]*)?(?://|/*)[ ]*#exclude[
]*([^
]*)[ ]*(?:*/)?(?:[ ]*[
]+)?((?:.|
|
)?)(?:[ ]*)?(?://|/*)[ ]*#endexclude[ ]*(?:*/)?(?:[ ]*[
]+)?/: Nothing to repeat Use --force to continue.
任何这方面的帮助将不胜感激!
好吧,事实证明这是一个与我实际创建正则表达式的方式有关的问题。
我正在创建(并应用)像这样的正则表达式:
var rExclude = '(?:[ 't]*)?(?:'/'/|'/'*)[ 't]*#exclude[ 't]*([^'n*]*)[ 't]*(?:'*'/)?(?:[ 't]*['r'n]+)?((?:.|'n|'r)*?)(?:[ 't]*)?(?:'/'/|'/'*)[ 't]*#endexclude[ 't]*(?:'*'/)?(?:[ 't]*['r'n]+)?';
contents = contents.replace(new RegExp(rExclude, 'gi'), function () { return ""; });
这给了我开始文章中描述的错误。但是,由于正则表达式位于字符串中,JavaScript 决定以不同的方式处理正则表达式。您可以通过两种方式修复它:
解决方案 1此解决方案改变了字符串中内容转义的方式。
var rExclude = '(?:[ 't]*)?(?://|/''*)[ 't]*#exclude[ 't]*(?:''*/)?(?:.|'n|'r)*?(?://|/''*)[ 't]*#endexclude[ 't]*(?:''*/)?';
contents = contents.replace(new RegExp(rExclude, 'gi'), function () { return ""; });
解决方案 2此解决方案改变了实际正则表达式的创建方式:
contents = contents.replace(/(?:[ 't]*)?(?:'/'/|'/'*)[ 't]*#exclude[ 't]*(?:'*'/)?(?:.|'n|'r)*?(?:'/'/|'/'*)[ 't]*#endexclude[ 't]*(?:'*'/)?/gi, function () { return ""; });
不幸的是,这只是另一个奇怪的JavaScript怪癖。
双倍
的反斜杠。
注意这里:(?:*/)?
没有反斜杠?这意味着您的*
正在尝试重复。无。没什么可重复的。
相关文章:
- JavaScript中的正则表达式应该是什么
- 不接受0-0-0的正则表达式是什么
- 这个正则表达式的日期/时间有什么问题
- 匹配某个字符后所有文本的正则表达式是什么
- 什么将是日期格式的正则表达式'dd-M-y'
- 我应该使用什么正则表达式来验证数字模式
- 正则表达式上的重音符号有什么用
- 我的电子邮件正则表达式有什么问题
- 什么'用这个正则表达式查找URL是错误的
- 印地语数字的正则表达式是什么
- 什么是最不坏的正则表达式来拒绝绝对无效的电子邮件地址
- 以下情况的有效正则表达式是什么
- 这个正则表达式我错过了什么
- 什么是用于断开变量可能包含“&”的查询字符串的正则表达式
- 这个正则表达式有什么问题
- 什么正则表达式模式将从包含的外部HTML文本中提取内部HTML
- 什么是用于删除大写字母之间的空格的正则表达式,但在单词之间保留空格
- 在这种情况下,正则表达式中的“[”是什么( 2 个问题)
- 需要使用什么正则表达式将内容插入某些字符的第 n 次出现之间
- 匹配正确字符串的确切正则表达式是什么