尝试使用REGEX

时间:2018-07-24 23:42:07

标签: regex

我有一系列电话号码,需要删除其中的前导零和数字之间的所有空格。

到目前为止,我有以下正则表达式:

^[^1-9A-Z]+

但是需要添加删除数字之间任何空格的功能。

例如我想要

012345 6789

成为:

123456789

任何帮助将不胜感激!

3 个答案:

答案 0 :(得分:0)

只需使用|选择前导零/非数字/非单词字符或任何空格,然后替换为空字符串:

/^[^1-9A-Z]+|\s/

https://regex101.com/r/j9VJSA/1

答案 1 :(得分:0)

您用一个空字符串替换此模式:

^0+|\s+

正则表达式由^0+\s+两部分组成。当任何这些部分匹配时,正则表达式将匹配。 ^0+在字符串开头匹配一个或多个0。 \s+匹配一个或多个空格字符。

答案 2 :(得分:0)

$ echo "012345 6789" | sed -e 's/^0*//' -e 's/\([0-9]*\)\s\([0-9]*\)/\1\2/g'    
123456789

$ echo "012345 6789 876" | sed -e 's/^0*//' -e 's/\([0-9]*\)\s\([0-9]*\)/\1\2/g'    
123456789876

$ echo "0012345 6789 876 54" | sed -e 's/^0*//' -e 's/\([0-9]*\)\s\([0-9]*\)/\1\2/g'    
12345678987654

说明:

  • ^0*以匹配所有前导0
  • \s表示空格
  • [0-9]以匹配任何单个数字
  • [0-9]*以匹配任何数字
  • \(\)用于分组
  • \1\2来选择组