这是我目前所拥有的,但只有在小数点前后跟小数点时才有效。
^\$?(\d*?(?<=\d)\.?(?=\d)\d*?)$
所以字符串:'$50.00'
匹配,但'$.50'
和'$50.'
不匹配(我希望它们)
如果可能的话,我想在单个组中检索匹配的十进制,如'50 .00',以便在匹配时我可以获取标准化值。
答案 0 :(得分:2)
试试这个:
^\$?(\d+(?:\.\d*)?|\.\d+)$
它将匹配:
^\$? # an optional $ at the begin
(\d+ # one or more digits
(?:\.\d*)? # followed by an optional decimal part
|\.\d+ # or just decimal places without any leading digits
)$
答案 1 :(得分:1)
(?=^.*\d.*$)^(?:\$\s*)?(?:\d|,)*?\.?(?:\d?)*$
disallows:
$
.
$.
<empty>
<whitespace>
allows:
$50,000
$500
$0
50,000
500
0
.0
.00000000000
$50,000.000000
$ 5.
答案 2 :(得分:0)
^\$?\s*((?=\d*\.|\d)\d*(?:\.\d*)?)$
答案 3 :(得分:0)
呃,怎么样
^\$?(\d*\.?\d*)$