Полагаю, что вы действительно хотите, это способ узнать любое число из числа , которое имеет смысл в качестве значения валюты.Так что 1.04e-7
, вероятно, не должно совпадать, и не должно 1.234
или 12.3
, хотя все они, конечно, числовые.
Наконец, вы должны ожидать тысячи разделителей, таких как 1,234.56
(который, как и десятичная точка, также может варьироваться в зависимости от региона).Итак, если вы когда-нибудь захотите проверить значения валют, используя точку в качестве десятичного разделителя и запятую в качестве необязательного разделителя тысяч, попробуйте следующее:
/\b\d{1,3}(?:,?\d{3})*(?:\.\d{2})?\b/
Объяснение:
\b # word boundary assertion
\d{1,3} # 1-3 digits
(?: # followed by this group...
,? # an optional comma
\d{3} # exactly three digits
)* # ...any number of times
(?: # followed by this group...
\. # a literal dot
\d{2} # exactly two digits
)? # ...zero or one times
\b # word boundary assertion