使用对象属性构造正则表达式时,限定符无效
Invalid quantifier when using an object property to construct a regex
我正试图从对象属性动态构建一个简单的正则表达式。
var type = 'bold';
var styles = {
"bold italic" : "***",
"bold" : "**",
"italic" : "*"
};
var re = new RegExp(styles[type], 'g');
但是,我返回了一个无效的量词错误。
如果我把变量放在引号里,就像这样:
var re = new RegExp('"' + styles[type] + '"', "g");
当type == 'italic'
而不是'bold'
时,它工作正常
有人能解释为什么会这样,并提供解决方案吗?
在正则表达式中,字符*
是一个量词。表达式:
a*
意味着a
零次或更多次(a
也可以是一个表达式)。
当你试图匹配*
本身而不将其用作量词时,你应该转义它:
var styles = {
"bold italic" : "''*''*''*",
"bold" : "''*''*",
"italic" : "''*"
};
相关文章:
- regex look-behind:无效的正则表达式:/(?<=.)S+$/:无效的组
- 在正则表达式中添加 (?i) 会导致 javascript 中出现错误“无效的正则表达式组”
- 输入元素模式属性的Javascript正则表达式在reFiddle上有效,但在页面上无效
- 正则表达式在浏览器上有效,但在Node.js中无效
- 什么是最不坏的正则表达式来拒绝绝对无效的电子邮件地址
- javascript无效正则表达式无效组
- 修复Javascript无效的正则表达式:无效的组
- 电话正则表达式,但希望使所有 10 位数字都相同无效
- javascript 带有标记“”的正则表达式无效
- 为什么我在正则表达式背后的积极看法无效
- javascript 错误:未定义 jQuery 和无效的正则表达式:缺少 /
- 正则表达式无效组
- Nodejs 正则表达式错误:“无效的正则表达式:没有什么可重复的”
- 正则表达式在字面声明时有效,但在使用新运算符和变量值声明时无效
- 用于修复无效 JSON 的正则表达式
- 无效的正则表达式标志 a
- 正则表达式负面外观在 JavaScript 中无效
- 如何在下面修复这个无效的正则表达式标志
- javascript无效正则表达式:Unmatched ')'
- RegEx返回SyntaxError:无效正则表达式:/*/:不需要重复