JavaScript正则表达式.replace用法

时间:2014-05-30 09:20:36

标签: javascript expression

我正在尝试使用正则表达式来显示HTML代码中的“Desired String”,任何人都可以看到我出错的地方吗?

alert("< TD>< B>< B>13COB251< /B> - Desired String< /B>< /TD>".replace(/(<[A-Z]*>)+13COB251(<\/[A-Z]*>)+ - ([a-z]*)(<\/[A-Z]*>)+/gi, "$3"))

谢谢!

3 个答案:

答案 0 :(得分:1)

如果您将当前代码放入Regexper,则会出现以下错误:

  

/(&lt; [AZ]&gt;之后的第1行第22列(字节22)中的*,+,?,{,{,,(,[,。,\,$,|,)的预期之一。 )+ 13COB251(小于

您需要escape /字符,方法是在其前加{(1 {}})反斜杠:

\

Regex

然而,正如您所看到的,这并不准确。 the best answers on StackOverflow中的一个将解释为什么不应该用正则表达式解析HTML。

答案 1 :(得分:0)

您需要转义模式中的/字符,因为它是分隔符。

然后你需要一些量词。模式(<[A-Z]>)+匹配一个或多个HTML标记,但仅匹配具有单个字符标记名称的HTML标记。您还需要(<[A-Z]+>)+来匹配<TD>标记。

所需字符串的模式也需要一个量词,并且该集需要匹配更多字符,因为所需字符串不包含小写字符。

alert("<TD><B><B>13COB251</B> - Desired String</B></TD>".replace(/(<[A-Z]+>)+13COB251(<\/[A-Z]>) - ([A-Za-z ]+)(<\/[A-Z]+>)+/gi, "$3"))

演示:http://jsfiddle.net/RH6zc/

答案 2 :(得分:0)

您忘了考虑代码中的空格和所需的字符串。

/(< *[A-Z]*>)+13COB251(< *\/[A-Z]*>)+ - ([a-z ]*)(< *\/[A-Z]*>)+/gi
   ^                    ^                    ^     ^