JavaScript中美元金额的正则表达式
Regular Expression for dollar amount in JavaScript
我知道这已经做了一千次了,但我很难把它做好。我需要为美元金额设置文本输入值的格式。不允许使用逗号。只允许有两位小数。应允许的示例:
- 100
- 100.10
- 100美元
- 100.25美元
下面是我当前的不完全正则表达式。目前,它允许在任何地方(而不仅仅是在开头)包含多个美元符号,在任何地方包含多个小数点,以及不应该包含的两个以上的小数点。
<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>
我将非常感谢你的帮助。谢谢
编辑
对不起,你的问题显然要求精确到小数点后两位。这就是你想要的:
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
你必须转义你的美元符号,然后你想要小数点后的两个选项数字:
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
Fiddle
或者,为了允许小数点后的任意数字,可以使用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
对于我们这些想要允许逗号的人来说,下面是它的正则表达式:
/^'$?'d+(,'d{3})*'.?[0-9]?[0-9]?$/
我主张允许它,如果你实际上不想要的话,可以删除后端的逗号。任何让用户更轻松的事情。Jakob Nielson在第7点讨论了繁琐的形式。
我建议不要在.keyup
(即用户键入)上进行验证,而是在用户提交表单时进行验证。
然后,您可以验证dollarAmountOnly
文本框是否与正确的正则表达式匹配,而不是替换无效字符。
有效价格的正则表达式是(这允许尾随/前导空格):
/^ *'$?'d+(?:'.'d{2})? *$/g
因此,当用户按下submit时,您会看到regex是否与dollarAmountOnly
匹配,如果不匹配,则以某种方式让用户知道。
下面是一个正则表达式,用于识别javascript:中的各种货币
_this.currencyRegex = /^('$|'€'£|'₪|)(?!0'.00)'d{1,3}(,'d{3})*('.'d'd)?$/;
和一个很好的调试工具:
https://regex101.com/r/hL2pF2/26
相关文章:
- java.net和javascript之间正则表达式的差异
- Grunt匹配正则表达式
- 不同浏览器中的空白字符正则表达式行为
- 正则表达式在字符串中找到base64
- 子字符串/正则表达式以获取字符串中保存的 SRC 值
- 调用正则表达式匹配的函数
- 使用正则表达式评估电子邮件地址时出现性能问题
- Javascript 正则表达式 : ^[^/s/]+[a-z]{1,}[0-9]*[-_]*[^/][
- JavaScript正则表达式文本与RegExp对象
- 正则表达式只允许 x 个整数
- 使用正则表达式将输入格式设置为单字符逗号、单字符逗号等
- 改进用于验证付款金额的正则表达式
- 正则表达式与数字中的第二个点匹配
- 键按正则表达式以查找具有负值的小数
- 一个正则表达式,用于从JS中的HTML标记中删除id、样式和类属性
- 返回美元金额正则表达式 JavaScript
- JavaScript中美元金额的正则表达式
- 带空格的货币金额的正则表达式
- 带可选美元符号的正则表达式整美元金额
- 使用JavaScript中的正则表达式验证货币金额