货币的Javascript正则表达式

货币的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) +前面的一

我只想传递适当的货币金额,如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)

  • +
    前面的一个或多个实体(因此
    \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}$/;
细分:

  • ^
    字符串的开头

  • \d
    一个数字(0-9)

  • +
    前面的一个或多个实体(因此
    \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:因为你没有标记它。当你输入你的问题时,右边有一个方便的格式框。还有一个预览区,你可以在那里看到它发布时的样子。当然,当你点击“发布你的问题”时,显示了你自己的帖子。负数怎么样?:)