在正则表达式中使用变量

时间:2012-01-25 15:19:07

标签: javascript jquery

说我有以下变数:

myId; //Email_PDF
currentHoverOnItem; //Email_PDF_english of Email_PDF_Dutch or ...

所以第一个值是" Email_PDF"第二个是" Email_PDF_english"。当currentHoverOnItem包含myId时,我想要的是什么,然后可以执行某些操作。 这就是我到目前为止所做的:

var pattern = new RegExp("^/"+myId+"/$");

if (currentHoverOnItem.match(pattern))
{
    //Do something
}

这是使用正则表达式的正确方法吗?它应该匹配部分字符串,匹配之前或之后可以有文本。

4 个答案:

答案 0 :(得分:1)

  

这是使用正则表达式的正确方法吗?

没有!正则表达式适用于模式,而不适用于文字字符串。使用indexOf

if (currentHoverOnItem.indexOf(myId) >= 0)
{
    //Do something
}

答案 1 :(得分:0)

试试这个

var pattern = new RegExp(myId, "g");

if (currentHoverOnItem.match(pattern))
{
    //Do something
}

答案 2 :(得分:0)

您的模式是“锚定的”,意味着^和$指定字符串的开头和结尾。 要匹配您可以使用的锚定模式中的“Email_PDF_english” ^ Email_PDF _(。*)$,但如果您的字符串较长,则不会匹配,如您的评论所示。

如果没有锚定,您可以在Email_PDF _...字符串后面测试空白,即 Email_PDF _([^ \ S] *)\ S +

答案 3 :(得分:0)

您无需在此处使用reg_exp。使用indexOf会为你做到这一点

if(currentHoverOnItem.indexOf(myId) != -1)
{
    //Do something
}