定位并包装小数点后的第 3 位数字
Targeting and wrapping the 3rd digit after a decimal
我正在尝试制作一个脚本,该脚本将仅包装小数点后的第 3 位数字。目的是为油价格式化几分之一美分。
即输入的 3.249 将输出
3.24<sup>9</sup>
到目前为止,我所拥有的都包装了小数点之后的任何内容。例如,我可以跨越第一个、前 2 个或所有 3 个,但不能忽略前 2 个而只跨第三个。
<script>
$(document).ready(function(){
$('.pricesup .maintext > span').html(
$('.pricesup .maintext > span').html().replace(/'.'d{3}/,
function(a){
return '<sup>' + a + '</sup>';
})
);
});
</script>
我需要正则表达式/.''d{3}/来选择最后一个数字或小数点后第 3 位。任何帮助将不胜感激。
JS小提琴:http://jsfiddle.net/alanfleming/wDntk/
为此
,您需要几个捕获组:
<script>
$(document).ready(function(){
$('.pricesup .maintext > span').html(
$('.pricesup .maintext > span').html().replace(/('.'d'd)('d+)/g, "$1<sup>$2</sup>");
);
});
</script>
这匹配一个点,后跟两位数字,后跟一个或多个数字。它在两个单独的捕获组中捕获第一部分(点后跟两位数字)和第二部分(一个或多个后续数字)。在替换中,我们将整体匹配替换为第一个捕获组不变,然后是包裹在 sup
标记标记中的第二个捕获组。
你也不需要传递函数作为第二个参数(尽管这样做很好),你可以使用 $1
、$2
等占位符。
如果要使用函数,捕获组将在完全匹配后作为附加参数传递给函数:
<script>
$(document).ready(function(){
$('.pricesup .maintext > span').html(
$('.pricesup .maintext > span').html().replace(/('.'d'd)('d+)/g, function(m, c1, c2) {
return c1 + "<sup>" + c2 + "</sup>";
});
);
});
</script>
只是为了完整起见:不需要使用捕获组,但它可能是最干净的。如果您继续使用函数,则可以执行此操作:
<script>
$(document).ready(function(){
$('.pricesup .maintext > span').html(
$('.pricesup .maintext > span').html().replace(/'.'d{3,}/g, function(m) {
return m.substring(0, 3) + "<sup>" + m.substring(3) + "</sup>";
});
);
});
</script>
rex 匹配一个点,后跟三个或更多数字,然后将匹配的字符串切碎。
我会使用上面的第一个解决方案,FWIW,使用捕获组和占位符。
相关文章:
- 如何将函数包装在函数中以避免代码重复
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 同位素库错误:未捕获错误无布局模式包装生产线8
- 将数字转换为一定数量的硬币
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- Javascript逻辑运算符和字符串/数字
- 如何在javascript中获得与特定数字相等的随机数
- 如果元素's的ID以数字开头
- 为什么要包装每一个原型“;类“;JS中具有匿名函数的对象
- 递增一个数字而不去掉前导零
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 如何在这里将两个值最低的数字相加
- 如何删除除冒号、数字和'上午'或者'下午'
- 如何为jQuery屏蔽输入插件创建一个允许字母数字、空格和重音字符的掩码
- Javascript排序字符串或数字
- 定位并包装小数点后的第 3 位数字
- 试图添加两个数字,但它们被包装在span标签中
- 在span标签javascript中包装数字