JS Regex带有变量和可能的非法字符

时间:2012-09-02 12:42:17

标签: javascript regex

我无法在Javascript中使用此正则表达式字符串:

var input = $("input").val();
var hi = "(?<=[^ ​ ‍])" + input + "(?=[$ ​ ‍])";
var reg = new RegExp(hi);
alert(reg);

最后一行不起作用,但在正则表达式有效时它确实有效。我将变量放入第二个字符串进行完整的正则表达式搜索,然后将其传递给正则表达式对象。为什么这个正则表达式查询无效? (如果你想知道,括号中的字符是空格,zwsp,nbsp和zwj。)

1 个答案:

答案 0 :(得分:1)

JavaScript正则表达式不支持look-behind。

但是,它们确实支持前瞻,所以如果你真的需要这个功能,你可以反转输入并将表达式“向后”写。如果你同时想要前瞻和后视,这会有点复杂。

由于你还没有透露你实际想要实现的目标,你可以避免零宽度匹配,只使用普通的捕获组。