货币的Javascript正则表达式
我只想传递适当的货币金额,如22.22、465.56、1424242.88 我一直在使用这个正则表达式:货币的Javascript正则表达式,javascript,regex,Javascript,Regex,我只想传递适当的货币金额,如22.22、465.56、1424242.88 我一直在使用这个正则表达式: [0-9]+\.[0-9][0-9](?:[^0-9a-zA-Z\s\S\D]|$) 但它允许使用诸如25.55英镑之类的符号。我如何强制使用正确货币格式的数字 感谢您的帮助听起来您只是没有提供正则表达式上的锚,而且还没有逃过。例如,它应该是: var currencyNumbersOnly = /^\d+\.\d{2}$/; 细分: ^字符串的开头 \d一个数字(0-9) +前面的一
[0-9]+\.[0-9][0-9](?:[^0-9a-zA-Z\s\S\D]|$)
但它允许使用诸如25.55英镑之类的符号。我如何强制使用正确货币格式的数字
感谢您的帮助听起来您只是没有提供正则表达式上的锚,而且还没有逃过
。例如,它应该是:
var currencyNumbersOnly = /^\d+\.\d{2}$/;
细分:
字符串的开头^
一个数字(0-9)\d
前面的一个或多个实体(因此+
表示“一个或多个数字”)\d+
文字小数点。请注意,某些区域性使用\。
而不是,
正好两位数字\d{2}
字符串结尾$
0000000.00
。它还不允许2
(需要2.00
)。还要注意的是,即使在谈论货币数字时,我们也不总是只关注数百。例如,银行汇率可能会在小数点右边的几位继续变化。(例如,xe.com表示,目前1美元=0.646065英镑)
正如Jack在对该问题的评论中指出的,您可能希望允许使用负数,因此在^
后面插入一个-?
(0或1个-
字符)可能是合适的:
var currencyNumbersOnly = /^-?\d+\.\d{2}$/;
更新:现在我可以看到您的完整正则表达式,您可能需要:
var currencyNumbersOnly = /^\d+\.\d{2}(?:[^0-9a-zA-Z\s\S\D]|$)/;
我不确定你在最后用那个位做什么,特别是它似乎说(除其他外)你允许一个字符,只要它不是
0-9
和,只要它不是\D
。由于\D
的意思是“不是0-9
”,很难看出有什么东西能与之匹配。(类似地,\s
和\s
在那里。)听起来你只是没有在正则表达式上提供锚,你也没有逃脱
。例如,它应该是:
var currencyNumbersOnly = /^\d+\.\d{2}$/;
细分:
字符串的开头^
一个数字(0-9)\d
前面的一个或多个实体(因此+
表示“一个或多个数字”)\d+
文字小数点。请注意,某些区域性使用\。
而不是,
正好两位数字\d{2}
字符串结尾$
0000000.00
。它还不允许2
(需要2.00
)。还要注意的是,即使在谈论货币数字时,我们也不总是只关注数百。例如,银行汇率可能会在小数点右边的几位继续变化。(例如,xe.com表示,目前1美元=0.646065英镑)
正如Jack在对该问题的评论中指出的,您可能希望允许使用负数,因此在^
后面插入一个-?
(0或1个-
字符)可能是合适的:
var currencyNumbersOnly = /^-?\d+\.\d{2}$/;
更新:现在我可以看到您的完整正则表达式,您可能需要:
var currencyNumbersOnly = /^\d+\.\d{2}(?:[^0-9a-zA-Z\s\S\D]|$)/;
我不确定你在最后用那个位做什么,特别是它似乎说(除其他外)你允许一个字符,只要它不是
0-9
和,只要它不是\D
。由于\D
的意思是“不是0-9
”,很难看出有什么东西能与之匹配。(同样的,\s
和\s
在那里。)对不起,我不知道为什么会这样。它应该是:/[0-9]+\[0-9][0-9](?:[^0-9]|$)/@kadeshiseraph:因为你没有标记它。当你输入你的问题时,右边有一个方便的格式框。还有一个预览区,你可以在那里看到它发布时的样子。当然,当你点击“发布你的问题”时,显示了你自己的帖子。负数怎么样?:)对不起,我不知道为什么会这样。它应该是:/[0-9]+\[0-9][0-9](?:[^0-9]|$)/@kadeshiseraph:因为你没有标记它。当你输入你的问题时,右边有一个方便的格式框。还有一个预览区,你可以在那里看到它发布时的样子。当然,当你点击“发布你的问题”时,显示了你自己的帖子。负数怎么样?:)