Java Regex删除价格输入的美元符号和尾随零

Java Regex删除价格输入的美元符号和尾随零,java,regex,Java,Regex,我想从价格输入中删除句点和$符号后的尾随零。比如说, $100 -> 100 $10.000 -> 10 $10.0100 -> 10.01 $10.1234 -> 10.1234 但是,我有下面的正则表达式,它不删除$或句点符号:[.0]+$。此外,它会删除所有零。您可以使用 String result = s.replaceAll("^\\$|(?:(\\.[0-9]*[1-9])|\\.)0+$", "$1"); 看 详细信息 ^\\\$-字符串开头

我想从价格输入中删除句点和
$
符号后的尾随零。比如说,

$100    -> 100
$10.000  -> 10
$10.0100 -> 10.01 
$10.1234 -> 10.1234
但是,我有下面的正则表达式,它不删除
$
或句点
符号:
[.0]+$
。此外,它会删除所有零。

您可以使用

String result = s.replaceAll("^\\$|(?:(\\.[0-9]*[1-9])|\\.)0+$", "$1");

详细信息

  • ^\\\$
    -字符串开头的
    $
    字符
  • |
    -或
  • (?:
    -开始一个与以下两个备选方案匹配的非捕获组:
    • (\\.[0-9]*[1-9])
      -捕获组1(稍后使用
      $1
      占位符):一个
      后跟0+个数字,后跟一个非
      0
    • |
      -或
    • \\.
      -一个点
  • -非捕获组结束
  • 0+
    -1+零
  • $
    -字符串结束
您可以使用

String result = s.replaceAll("^\\$|(?:(\\.[0-9]*[1-9])|\\.)0+$", "$1");

详细信息

  • ^\\\$
    -字符串开头的
    $
    字符
  • |
    -或
  • (?:
    -开始一个与以下两个备选方案匹配的非捕获组:
    • (\\.[0-9]*[1-9])
      -捕获组1(稍后使用
      $1
      占位符):一个
      后跟0+个数字,后跟一个非
      0
    • |
      -或
    • \\.
      -一个点
  • -非捕获组结束
  • 0+
    -1+零
  • $
    -字符串结束

.0010
呢<代码>0.001或
.001
?用
删除
$
怎么样?替换(“$”,“)
,然后将字符串转换为浮点数?考虑:与其尝试删除,不如捕获并保留所需内容。使用一个匹配的组。@ WKTROSTRIBEI EHM HM好的问题,甚至没有考虑。但对于这些值,它应该保持不变。请参见@KevinO,它必须是正则表达式。按照我的应用程序的构建方式,我们有一个gui,在其中放置一个regex,用于格式化值,这就是为什么我需要一个regex。那么
.0010
呢<代码>0.001或
.001
?用
删除
$
怎么样?替换(“$”,“)
,然后将字符串转换为浮点数?考虑:与其尝试删除,不如捕获并保留所需内容。使用一个匹配的组。@ WKTROSTRIBEI EHM HM好的问题,甚至没有考虑。但对于这些值,它应该保持不变。请参见@KevinO,它必须是正则表达式。按照我的应用程序的构建方式,我们有一个gui,在其中放置一个正则表达式,用于格式化值,这就是我需要正则表达式的原因。