繁体   English   中英

JavaScript正则表达式.replace用法

[英]JavaScript Regular Expression .replace usage

我正在尝试使用正则表达式仅显示HTML代码中的“所需字符串”,有人可以看到我要去哪里了吗?

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

谢谢!

如果您通过Regexper输入当前代码,则会出现以下错误:

预期* / +,?,{,{,(,[,。,\\,$,| ,,)在/(<[AZ]>)+ 13COB251(<

您需要通过在反斜杠前加上一个反斜杠( \\ )来转义 /字符:

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

正则表达式

但是,正如您所看到的,这并不是很准确。 关于StackOverflow的最佳答案之一将解释为什么不应该使用正则表达式解析HTML。

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

然后,您需要更多的量词。 模式(<[AZ]>)+匹配一个或多个HTML标签,但仅匹配具有单个字符标签名称的HTML标签。 您还需要(<[AZ]+>)+来匹配<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/

您忘记考虑标签内和所需字符串中的空格。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM