我只是想如果有人输入10.01.1,那么它将是10.011 &如果有人输入10.00.........................................................................................................................................................................................................................
我试过这个.replace(/(\d*)(\.){1,1}(\d*)(?=(\.)+)/g,'$1')
。但对我没用
4条答案
按热度按时间fbcarpbf1#
你可以数一数这些点,然后用一个点代替第一个点,其余的去掉这个点。
agyaoht72#
您可以使用split和点作为分隔符:
w6mmgewl3#
如果你只想通过正则表达式来完成,你可以搜索一个交替,它捕获了你的第一个句点,但只是简单地匹配每一个其他的句点,用捕获的组替换。由于捕获的字符串对于未捕获的匹配项将为空,因此只有第一个句点组被其自身替换,而其他句点组被删除。参见regex demo。
搜索:
替换为
$1
。nnsrf1az4#
试试
/[^\d.\s]|(?<=\.\d*)\./g;
简而言之,替换除数字0-9、“.”和空格之外的所有字符,或者任何前面有“.”和零个或多个数字0-9的“.”。正后看(?<=)
确保任何在其之前具有“.”的“.”将被替换,这意味着每个组的第一个“.”将不被替换。请注意,每个由空格或新行分隔的组都被认为是一个单独的数字,因为不替换任何\s
。| 分段|说明|
| - -----|- -----|
|
|替换任何字符***但不替换***数字0-9、“.”和空白|
|
|或|
|
|替换任何前面有“.”和零或更多数字0-9的“.”|
RegEx101