用于金额的Javascript正则表达式
我正试着以一定的价格得到一个正则表达式: 任何数字+周期(至少为零,不超过一个)+任何数字(至少为零,不超过两个[如果可能,为零或两个]) 我得到的是:用于金额的Javascript正则表达式,javascript,regex,Javascript,Regex,我正试着以一定的价格得到一个正则表达式: 任何数字+周期(至少为零,不超过一个)+任何数字(至少为零,不超过两个[如果可能,为零或两个]) 我得到的是: /^\d+\.\{0,1}+\d{0,2)+$/ …显然不起作用。我正在尝试做的示例: 123有效 123.00有效 12.34.5无效 123.000无效 尝试匹配包含或不包含期间的金额。如果包含句点,则只能包含一次且小数点后不能超过两位数。将小数点和小数点后的1或2位数设置为自己的可选组: /^\d+(\.\d{1,2})?$/ 测试
/^\d+\.\{0,1}+\d{0,2)+$/
…显然不起作用。我正在尝试做的示例:
123有效
123.00有效
12.34.5无效
123.000无效
尝试匹配包含或不包含期间的金额。如果包含句点,则只能包含一次且小数点后不能超过两位数。将小数点和小数点后的1或2位数设置为自己的可选组:
/^\d+(\.\d{1,2})?$/
测试:
> var re = /^\d+(\.\d{1,2})?$/
undefined
> re.test('123')
true
> re.test('123.00')
true
> re.test('123.')
false
> re.test('12.34.5')
false
> re.test('123.000')
false
您是否尝试过:
/^\d+(\.\d{1,2})?$/
?
使组(\.\d{1,2})
可选(即匹配0或1次)。是否需要此工作
// Check if string is currency
var isCurrency_re = /^\s*(\+|-)?((\d+(\.\d\d)?)|(\.\d\d))\s*$/;
function isCurrency (s) {
return String(s).search (isCurrency_re) != -1
}
通常有更好的方法来检测数字<例如,code>parseFloat。@RikudoSennin
parseFloat
可用于尝试将字符串转换为数字,可能导致NaN
或不需要的数字。RegExps可以用来验证字符串。是的,但是如果parseFloat返回一个NaN
,这可能意味着它不是一个有效的数字。+1这也是我想到的。。。除了我的浏览器决定挂起,因为我正在发布它:(当你有100000.00时,你会怎么做?@maazza处理这些输入不是原始问题的一部分。