我想创建正则表达式以删除一些匹配的字符串,字符串是电话号码
示例用户输入电话号码如下:
+jfalkjfkl saj f62 81 7876 asdadad30 asasda36
然后输出将是这样的:
628178763036
目前使用我当前的正则表达式^[\+\sa-zA-Z]+
,它可以选择+jfalkjfkl saj f
部分
什么是正则表达式,所以它也可以选择数字空间?
e.g:
62(select the space here)81
,81(select the space here)7876
答案 0 :(得分:4)
我不知道您计划使用哪种语言,但您可以替换此模式:
[^\d]+
,使用空字符串应该可以实现此目的。它将删除所有不是数字的内容。
答案 1 :(得分:1)
使用PCRE正则表达式,您应该只需删除与\D+
匹配的任何内容。例如:
echo "+jfalkjfkl saj f62 81 7876 asdadad30 asasda36" | perl -pe 's/\D+//g'
打印:
628178763036
答案 2 :(得分:0)
您似乎需要进行两项操作:
删除既不是空白也不是数字的所有内容:
s/[^ \d]//g;
删除所有额外的空白:
s/ +/ /g;
如果您还需要删除前导和尾随空白:
s/^ //;
s/ $//;
(用一个空格替换多个空格后)。
您可以使用\s
来表示更多类似空格的字符,而不仅仅是空白字符。
答案 3 :(得分:0)
如果您进行替换,您可以使用数字之间的空格重建电话号码:
search: \D*(\d+)\D*?(\s?)
replace: $1$2
答案 4 :(得分:0)
使用后视和前瞻来断言数字必须在空格之前/之后:
(?<=\d) +(?=\d)
整个正则表达式与空格匹配,因此无需在替换中引用组,只需替换为空白。