将变量传递给正则表达式

时间:2012-11-14 19:47:49

标签: javascript regex

我有一个正则表达式

var p = /\bj[^\b]*?\b/gi;

我需要将'j'设为变量值,但是当我执行以下操作时; -

var p = new RegExp('\\b'+'${0}'+'[^\\b]*?\\b', 'gi');

我收到错误 -

Uncaught SyntaxError: Invalid regular expression: /\b${0}[^\b]*?\b/: Nothing to repeat 

任何帮助表示感谢。

谢谢

3 个答案:

答案 0 :(得分:1)

我想你想要以下内容:

var p = new RegExp('\\b'+${0}+'[^\\b]*?\\b', 'gi');

使用${0}周围的引号,您只是构造一个包含这些字符的字符串,而不是插入变量值。

答案 1 :(得分:0)

将变量放在引号内,就像使用'${0}'一样,这将导致将其视为字符串。如果从中删除引号,则将其视为变量。

答案 2 :(得分:0)

对不起伙计们,我应该更清楚,值“{0}”是一个将被替换而不是变量的标记。发生错误是因为'{'和'}'是正则表达式中的特殊字符。

因此更改令牌模式解决了问题

var p = new RegExp('\\b'+'%text%'+'[^\\b]*?\\b', 'gi');