请正则表达式的高手,帮忙写一个校验金额的js表达式。
金额开头只可为正号或者负号,也可以没有符号,小数点前可以输入任意位数的数字,小数点后只能输入两位数字。...
金额开头只可为正号或者负号,也可以没有符号,小数点前可以输入任意位数的数字,小数点后只能输入两位数字。
展开
3个回答
展开全部
/^[-+]?(?:0|[1-9]\d+)(?:\.\d{0,2})?$/经测试完全符合你的要求的货币验证正则表达式...
qunit.css,qunit.js下载地址:https://github.com/jquery/qunit/tarball/master
测试代码如下:
===============================
<link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
<script type="text/javascript" src="qunit.js"></script>
<script type="text/javascript">
function validate(currency) {
return /^[-+]?(?:0|[1-9]\d+)(?:\.\d{0,2})?$/.test(currency);
}
test('starts with "+"', function() {
ok(validate('+123'));
});
test('invalid currency', function() {
ok(!validate('+-123'));
});
test('starts with "-"', function() {
ok(validate('-123'));
});
test('currency without any symbols', function() {
ok(validate('123'));
});
test('currency contains decimal partion', function() {
ok(validate('12.'));
});
test('invalid currency with many leading zero in integers', function() {
ok(!validate('00.12'));
});
test('decimal precision more than two', function() {
ok(!validate('0.123'));
});
test('decimal precision was two', function() {
ok(validate('0.12'));
});
test('decimal precision less than two', function() {
ok(validate('0.1'));
});
</script>
<h1 id="qunit-header">QUnit Test Suite</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup</div>
qunit.css,qunit.js下载地址:https://github.com/jquery/qunit/tarball/master
测试代码如下:
===============================
<link rel="stylesheet" href="qunit.css" type="text/css" media="screen">
<script type="text/javascript" src="qunit.js"></script>
<script type="text/javascript">
function validate(currency) {
return /^[-+]?(?:0|[1-9]\d+)(?:\.\d{0,2})?$/.test(currency);
}
test('starts with "+"', function() {
ok(validate('+123'));
});
test('invalid currency', function() {
ok(!validate('+-123'));
});
test('starts with "-"', function() {
ok(validate('-123'));
});
test('currency without any symbols', function() {
ok(validate('123'));
});
test('currency contains decimal partion', function() {
ok(validate('12.'));
});
test('invalid currency with many leading zero in integers', function() {
ok(!validate('00.12'));
});
test('decimal precision more than two', function() {
ok(!validate('0.123'));
});
test('decimal precision was two', function() {
ok(validate('0.12'));
});
test('decimal precision less than two', function() {
ok(validate('0.1'));
});
</script>
<h1 id="qunit-header">QUnit Test Suite</h1>
<h2 id="qunit-banner"></h2>
<div id="qunit-testrunner-toolbar"></div>
<h2 id="qunit-userAgent"></h2>
<ol id="qunit-tests"></ol>
<div id="qunit-fixture">test markup</div>
展开全部
/^([+-]?)((\d{1,3}(,\d{3})*)|(\d+))(\.\d{2})?$/
下面是符合的结果
1234
1234.56
123,456.78
12,345,678.90
下面是符合的结果
1234
1234.56
123,456.78
12,345,678.90
追问
不需要逗号,开头可以有正负号,或者没任何符号。
追答
试试 ^[+-]?\d*\.?\d{1,2}$
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
input.match(/[+-]?\d+[.]?\d{1,2}/g)
re.exec(input)
试试看吧
re.exec(input)
试试看吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询