我知道这已经做了一千次,但是我遇到了这个问题.我需要格式化美元金额的文本输入值.不应该允许逗号.只允许两位小数.应该允许的例子:
以下是我目前不完整的正则表达式.它目前允许多个美元符号包含在任何地方(不仅仅是在开头),多个小数点包含在任何地方,以及超过两个小数位,它不应该包含在内.
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" language="Javascript">
$(function(){
jQuery('.dollarAmountOnly').keyup(function () {
this.value = this.value.replace(/[^$0-9\.]/g, '');
});
});
</script>
</head>
<body>
<input type="text" class="dollarAmountOnly"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
我非常感谢帮助.谢谢!
Ada*_*kis 30
编辑
对不起,您的问题清楚地要求正好两位小数.这就是你想要的:
var r = /^\$?[0-9]+(\.[0-9][0-9])?$/;
console.log(r.test("12.55")); //true
console.log(r.test("$12.55")); //true
console.log(r.test("$12")); //true
console.log(r.test("$12.")); //false
console.log(r.test("$12.2")); //false
console.log(r.test("$$12")); //false
console.log(r.test("$12.555")); //false
Run Code Online (Sandbox Code Playgroud)
你必须逃避你的美元符号,然后你想要小数点后面的两个选项数字:
var r = /^\$?[0-9]+\.?[0-9]?[0-9]?$/;
console.log(r.test("12.55")); //true
console.log(r.test("$12.55")); //true
console.log(r.test("$12.")); //true
console.log(r.test("$12")); //true
console.log(r.test("$$12")); //false
console.log(r.test("$12.555")); //false
Run Code Online (Sandbox Code Playgroud)
或者,为了允许小数点后的任意数字,您可以使用Kleene闭包而不是两个可选数字
var r = /^\$?[0-9]+\.?[0-9]*$/;
console.log(r.test("12.55")); //true
console.log(r.test("$12.55")); //true
console.log(r.test("$12.")); //true
console.log(r.test("$12")); //true
console.log(r.test("$12.555")); //true
console.log(r.test("$$12")); //false
Run Code Online (Sandbox Code Playgroud)
use*_*231 10
对于我们这些想要允许逗号的人,这里有正则表达式:
/^\$?\d+(,\d{3})*\.?[0-9]?[0-9]?$/
Run Code Online (Sandbox Code Playgroud)
如果你真的不想要它,我主张允许它并删除后端的逗号.任何使用户更容易的东西. Jakob Nielson在第7点讨论了繁琐的形式.
| 归档时间: |
|
| 查看次数: |
22740 次 |
| 最近记录: |