【发布时间】:2012-05-02 10:22:57
【问题描述】:
我想从具有值$265.12+ 或$265.12- 或$0.0+ 或$0.0- 的字母数字字符串(比如金额)中提取十进制数265.12 或$0.0- 并使用它在JSP 中应用struts 逻辑标记。不确定如何在 JavaScript 的帮助下提取数字。
【问题讨论】:
标签: javascript regex jsp struts-1
我想从具有值$265.12+ 或$265.12- 或$0.0+ 或$0.0- 的字母数字字符串(比如金额)中提取十进制数265.12 或$0.0- 并使用它在JSP 中应用struts 逻辑标记。不确定如何在 JavaScript 的帮助下提取数字。
【问题讨论】:
标签: javascript regex jsp struts-1
你可以像这样使用正则表达式,
var amount = "$265.12+";
var doublenumber = Number(amount.replace(/[^0-9\.]+/g,""));
【讨论】:
如果不进行错误检查,则可以执行以下操作:
var string = "$123123.0980soigfusofui"
var number = parseFloat(string.match(/[\d\.]+/))
123123.098
【讨论】:
/[\d.]+/ - 在 JS 中偶然发现
也试试这个,
<script type="text/javascript">
function validate(){
var amount = $("#amount").val();
alert(amount.split(".")[1]);
} </script>
</head>
<body>
<input type="hidden" name="amount" id="amount" value="25.50">
<input type="submit" onclick="validate();">
【讨论】:
你可能对这个用于格式化货币的库感兴趣http://josscrowcroft.github.com/accounting.js/
【讨论】:
一个更优雅的解决方案,也是一种避免0.7700000004 javascript数学的方法:
var num = 15.3354;
Number(String(num).substr(String(num).indexOf('.')+1));
结果将始终是精确的小数位数。还有一个prototype 以便于使用
Number.prototype.getDecimals = function () {
return Number(String(this).substr(String(this).indexOf('.')+1));
}
所以现在只需15.6655.getDecimals() ==> 6655
【讨论】:
使用:
var str = parseFloat("$265.12".match(/[\d\.]+/))
alert(str % 1); => 0.12000000000000455
【讨论】: