再次,我需要一些帮助,我感谢你们在这里愿意提供帮助
我正在尝试为JavaScript函数实现一个正则表达式,它将替换HTML标记中包含的一串文本,但完全忽略该标记。
例如:
我需要查找和替换的字符串是美元符号($),
我正在使用的HTML看起来像这样:
<div class="myClass">
<input type="radio" value="$233.93" name="myInput" id="myInputId">
<label>
$36.<sup>07</sup>
</label>
</div>
如您所见,我在输入标签的value属性中有一个美元金额,在label标签内有另一个金额。
所有这些HTML都包含在td(表格单元格)中,而td又是表格的一部分,我正在按照列功能实现排序。
我的问题是我无法提出一个完全忽略HTML标签的正则表达式,只匹配我的标签标签($36.<sup>07</sup>
)中的字符串。
我把这个正则表达式放在一起:/[$](?=(\d{2,5}[.<]))/
这个正则表达式工作,但只有一半,因为它匹配值属性值的第一个美元符号,授予正则表达式它没有设置为全局,因为它将取代所有美元符号,我不想做那,我也无法改变HTML的结构。
非常感谢任何帮助。 感谢
答案 0 :(得分:2)
您可以使用jQuery轻松解决此问题:
jQuery.trim( jQuery('label').text() )
这将为您剥离标记,并生成$36.07
,然后您可以使用更简单的正则表达式进行测试。
(如果您当前没有使用jQuery,并且不想使用它,您仍然可以查看它的源代码并查看它们如何实现.text()
函数以模拟它。)
嗯,重新阅读你的问题,你可能会问别的东西 - 检索包含$
的所有标签(并忽略输入):
jQuery('label:contains($)')
或
jQuery('label').each( checkForDollars );
function checkForDollars()
{
if ( jQuery(this).text().matches(/\$\d{2,5}/) } )
{
// do something
}
)
答案 1 :(得分:0)
只要金额的格式始终为$36.<sup>07</sup>
,就可以使用。
function getAmount (s) {
var r = /\$([^<]+)<sup>(\d+)/.exec(s);
return r[1]+r[2];
}
getAmount("$36.<sup>07</sup>");
// returns "36.07"