【问题标题】:JavaScript Regex not detectingJavaScript 正则表达式未检测到
【发布时间】:2013-05-17 14:49:26
【问题描述】:

我试图创建一个匹配打开 HTML 标签的正则表达式。

<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>

是我想出的。它在 RegexPal.com http://gyazo.com/cef34f653c4a3483a31394330455c0cf 中运行良好 但是一旦我尝试在 JS(Chrome 和 Node)中的某些文本上使用它,就会发生这种情况:http://gyazo.com/0c938ee289c1632f3f576aaccda1f81e

规则是这样定义的:

var Rules = [
    new RegExp("<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)/>"),
    new RegExp("<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>"),
    new RegExp("</\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>")
];

内容是这样定义的:

var Content = "<!DOCTYPE HTML><html><head><title>derp</title></head><body><div class=\"derp\"><!--this is formatted terribly -->derp<br /></div></body></html>";

【问题讨论】:

  • 你知道他们在说什么 - 如果你有一个问题并尝试使用 RegEx 解决它,那么现在你有两个问题。
  • 使用 reg exp 匹配 html 是个坏主意。
  • 好吧,我只是在玩一些 HTML 语法,并尝试创建一个 Tokenizer。
  • 你可以使用DOM来解析它..

标签: javascript regex


【解决方案1】:

问题是如果你想使用RegExp(),你需要加倍\

 new RegExp("<\\w+((\\s+...

最好放弃正则表达式,只使用/regExp/

var Rules = [
    /<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)/>/,
    /<\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>"/,
    /</\w+((\s+\w+(\s*=\s*(?:\".*?\"|'.*?'|[^'\">\s]+))?)+\s*|\s*)>/
];

【讨论】:

    【解决方案2】:

    在字符串中使用时,您需要将\ 转义为\\,否则您只是在转义后面的内容。

    转义\ 字符或使用/regex/ 语法来定义正则表达式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 2013-08-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 2012-01-16
      相关资源
      最近更新 更多