0

javascript 正则表达式是否支持字符类中的反向引用?

我想做这样的事情:

htmlString.replace(/attribute_name=(['"])[^\1]*\1/,'')

但这不起作用。这样做:

htmlString.replace(/attribute_name=(['"])[^'"]*\1/,'')

不幸的是,我的 attribute_name 可以包含撇号或引号,因此我需要从属性内部排除实际的引号字符,但保留另一个。我不能确定使用的是哪一个。我可以放心地假设引号是实体的形式,但里面仍然可以有撇号:

<div attribute_name="John's car" class="someClass"></div>
<div attribute_name='some &quot;quoted text&quot;' class="someClass"></div>

我无法预测将在属性周围使用哪个 " 或 '。

如何摆脱属性并单独保留类属性(不要削减太多)?

上下文:我通过 $('templateContainer').innerHTML 获取 html。在再次将其插入页面之前,我必须修改该 html。我必须削减一些非标准的属性和所有的 ID 属性。

4

2 回答 2

3

我同意其他答案,因为我不认为属性是做这类事情的地方,但我也对推荐 DOM 持谨慎态度。当我这样做时,我只是觉得很脏,我不知道为什么。

我通常会尝试使用 javascript 对象来存储我的数据,然后使用格式正确的键等引用它。 耸耸肩 这是更多的工作,但它更清洁恕我直言。但是,这绝对不是完成任务的唯一方法。

至于你的问题,你也可以在 JavaScript 中使用非贪婪匹配,它看起来像这样:

htmlString.replace(/ ?attribute_name=(['"]).*?\1/, '')

JavaScript 中的正则表达式 | evolt.org

于 2011-02-18T21:14:21.913 回答
1

使用 DOM 或其他为分层内容设计的实际模型会好很多。也就是说,如果您必须使用正则表达式,最简单的方法可能是只使用|(OR)。

htmlString.replace(/attribute_name=('[^']*'|"[^"]*")/,'')
于 2010-02-16T10:41:49.503 回答