正则表达式:如何匹配小数'。'如果它后跟或前后(或两者)是'\ d'十进制数

时间:2010-01-27 22:00:40

标签: regex

这是我目前所拥有的,但只有在小数点前后跟小数点时才有效。

^\$?(\d*?(?<=\d)\.?(?=\d)\d*?)$

所以字符串:'$50.00'匹配,但'$.50''$50.'不匹配(我希望它们)

如果可能的话,我想在单个组中检索匹配的十进制,如'50 .00',以便在匹配时我可以获取标准化值。

4 个答案:

答案 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*)$