Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 使用正则表达式删除最后的前导零_Regex - Fatal编程技术网

Regex 使用正则表达式删除最后的前导零

Regex 使用正则表达式删除最后的前导零,regex,Regex,有没有办法单独使用正则表达式来解决这个问题 我有一根绳子,例如: 1234500变为123,45 12340500变为123405 123000变为123 知道我们可以使用组(即$1,$2,等等),有没有一种方法可以单独使用纯正则表达式实现这种转换,而不必在,处拆分字符串 谢谢这将删除结尾的零和逗号(如果后面只有零) 查找:,?0+$ 替换:NOTHING 说明: ,? # optional comma 0+ # 1 or more zeros $ # end of line

有没有办法单独使用正则表达式来解决这个问题

我有一根绳子,例如:

1234500
变为
123,45

12340500
变为
123405

123000
变为
123

知道我们可以使用组(即
$1
$2
,等等),有没有一种方法可以单独使用纯正则表达式实现这种转换,而不必在
处拆分字符串


谢谢

这将删除结尾的零和逗号(如果后面只有零)

  • 查找:
    ,?0+$
  • 替换:
    NOTHING
说明:

 ,?  # optional comma
 0+  # 1 or more zeros
 $   # end of line
如果要在结束零之前匹配所有内容,请使用:

^[\d,]+?(?=,?0+$)

  • 查找^([0-9,]*?)(?:,?0+)$
  • 第一组是结果
解释:

  • ^
    匹配字符串的开头
  • ([0-9,]*?)
    捕获组1:最少匹配以下数字和逗号
  • (?:,0+)
    可以选择匹配一个可选逗号,后跟一个或多个零。这将处理字符串没有尾随零且无需“替换”的情况
  • $
    匹配字符串的结尾
  • 正则表达式将替换所有尾随的零。如果,则由
    000
    组成的字符串(例如,组1)将是空字符串。如果你真的想保持至少一个零,那么使用:

    ^([0-9,]+?)(?:,?0+)?$
    
    let测试=[
    '123,450',
    '123,40500',
    '123,000',
    '123',
    '000'
    ]
    对于(让测试中的测试){
    测试=测试匹配(/^([0-9,]+?)(?:,?0+)$/)[1];
    控制台日志(测试);
    
    }
    我相信OP想要的结果是所有内容都符合,但不包括正则表达式匹配的内容。@Booboo:可能是,正在等待澄清。您想在结束零之前匹配所有内容还是删除这些结束零?100000的预期结果是什么?