我希望将以下格式或无效格式修改为有效的电话号码:
1 (639)-234-2323 => 6392342323
2 (042)-982-2234 => 0429822234
3 0974829-928 => 0974829928
4 +83246-983-34 => +832459834
5 +836(737)-898+78 => +83673789878
我可以使用此代码,如果给出了某个1-4,我可以正确地得到我的结果,但是如果5
,我真的很疯狂。
row[1] = row[1].gsub('(','').gsub(')','').gsub('-','').gsub(' ','')
此示例用于导入文件。所以你不能指望用户提示。
我也可能会导入格式无效的记录,但只能格式化为已接受的电话号码(任何地方都有括号或任何+
个标志)。
编辑我希望找到我的5
给出示例的解决方案。由于我无法移除+
符号,因此无法移除第一个符号。
编辑2 我在评论部分再次询问我需要包含这样的电话格式:
6 (+65)92349577 => +6592348577
@WiktorStribiżew建议以下正则表达式:s.gsub(/\A\(?(\+)|\D+/, '\1')
来自他的原始答案(被接受的答案)
答案 0 :(得分:3)
解决方案是捕获第一个+
并匹配所有其他非数字符号:
s.gsub(/\A(\+)|\D+/, '\1')
请参阅regex demo
模式详情:
\A(\+)
- 一个+
(被捕获到捕获组#1,因为它用捕获括号包裹)在字符串的开头(\A
)|
- 或\D+
- 除了数字之外的一个或多个字符。替换中的\1
是对捕获组#1中存储的内容的反向引用,它会在替换结果中恢复初始+