正则表达式为html属性添加引号

时间:2011-07-08 09:28:10

标签: javascript html regex quotes

我有这样的场景

在html标签中,如果属性没有被单引号或双引号包围..我想为它添加双引号

如何为此编写正则表达式?

2 个答案:

答案 0 :(得分:3)

如果重复此正则表达式的次数与元素中可能存在标记的次数一样多,那么只要文本相当正常并且不包含许多可能产生误报的特殊字符,这应该有效。

"<a href=www.google.com title = link >".replace(/(<[^>]+?=)([^"'\s][^\s>]+)/g,"$1'$2'")

正则表达式说:打开标记(<)后跟一个或多个非关闭标记([^>]+),不合理地(?)后跟等号(=)全部捕获作为第一组((...)),然后是第二组((...)),而不是单引号或双引号或空格([^"'\s]),后跟不是空格或关闭标记({{1} })一次或多次([^\s>]),然后将其替换为第一个捕获的组(+),然后将第二个捕获的组替换为单引号($1

例如循环:

'$2'

但这是解决问题的一种不好的方法。最好使用HTML解析器进行解析,然后根据需要重新格式化HTML。这将确保格式良好的HTML,正则表达式只能确保格式良好的HTML,如果输入完全符合预期。

答案 1 :(得分:1)

非常有帮助!我做了一些小改动,允许它将属性与单个字符值匹配: /(<[^>]+?=)([^"'\s>][^\s>]*)/g(将一个或多个+更改为零或更多*,并将>添加到第二组中的第一个匹配项。)