【问题标题】:Need help to use regex in match function of javascript [duplicate]需要帮助在javascript的匹配函数中使用正则表达式[重复]
【发布时间】:2018-05-12 06:15:29
【问题描述】:

我正在使用正则表达式来获取一些模式数据,它工作正常,但我需要使用变量中的正则表达式的某些部分,但我无法做到这一点,如果有人知道如何制作,请帮助我。

var subStr = document_root.documentElement.outerHTML.match(/http(.*?Frover.fff.com.*?)\;/g);
alert(subStr[0]);

我得到第一个警报结果,但需要这样做。

var link=rover.fff.com;
var regexpattern="/http(.*?F"+link+".*?)\;/g"
var rex=new RegExp(regexpattern);
var subStr = document_root.documentElement.outerHTML.match(regexpattern);
alert(subStr[0]);

我什么都没有。 请帮我。 如果您有任何困惑,请发表评论。

【问题讨论】:

  • 注意:在大多数情况下,在 HTML 上应用正则表达式是个坏主意。
  • 请描述你的代码的目的是什么:你想找到超链接吗?如果它们出现在文本中,或者出现在不是href 的属性中,或者出现在 HTML 注释中,……
  • 那个接近的理由真的很糟糕。这个问题应该不用正则表达式来解决。
  • Mozilla has an entire documentation page dedicated to regex。如果您是初学者,这绝对是一本好书
  • @trincot 你是对的,但是选择了副本是因为它回答了 为什么 OP 遇到了他们遇到的问题。

标签: javascript regex


【解决方案1】:

在 JavaScript 中,当您需要使用变量时,您必须创建一个新的 RegExp 对象,正如您所尝试的那样。

它有两个参数。第一个是模式的字符串(开头和结尾没有斜线)。第二个是任何标志(比如你的g)。

所以,你的模式应该是这样的:

var regexpattern = new RegExp('http(.*?F' + link + '.*?)\\;', 'g')

请注意,您必须像转义任何其他字符串一样转义字符串中的任何特殊字符(在这种情况下,您的 \ 必须转义为 \\ 才能正常工作)。

之后,您可以像使用 /pattern/ 表单一样使用它。在您的情况下,请务必在您的 match() 函数中使用 rex,而不是 regexpattern

(如果是某种原因不是文字 \ 并且您正在转义分号,只需将其完全删除,您就不需要转义分号。)

【讨论】:

  • 非常感谢。
猜你喜欢
  • 2016-11-08
  • 1970-01-01
  • 2012-03-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多