Ruby 正则表达式 gsub 除开始时的 + 以外的任何其他字符(phone 数字)
Ruby regex gsub any other characters except + on start (phone number)
我希望将以下格式或无效格式补救为有效的 phone 号码:
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(' ','')
此示例用于导入文件。所以你不能指望给用户一个提示。
我也愿意导入格式无效的记录,但应该将格式设置为可接受的 phone 数字(在任何地方或任何 +
符号内给出括号)。
EDIT 我想为我的 5
给出的示例找到一个解决方案。因为我不能在不删除第一个的情况下删除任何地方的 +
个标志。
编辑 2 我在评论部分再次询问我需要包含这样的 phone 格式:
6 (+65)92349577 => +6592348577
@WiktorStribiżew 建议使用以下正则表达式:s.gsub(/\A\(?(\+)|\D+/, '')
来自他的原始答案(被接受的答案)
解决方案是捕获第一个 +
并匹配所有其他 non-digit 符号:
s.gsub(/\A(\+)|\D+/, '')
图案详情:
\A(\+)
- 在字符串 (\A
)
|
- 或
\D+
- 一个或多个数字以外的字符。
替换中的</code>是对捕获组#1中存储的内容的反向引用,它恢复了替换结果</p>中的初始<code>+
我希望将以下格式或无效格式补救为有效的 phone 号码:
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(' ','')
此示例用于导入文件。所以你不能指望给用户一个提示。
我也愿意导入格式无效的记录,但应该将格式设置为可接受的 phone 数字(在任何地方或任何 +
符号内给出括号)。
EDIT 我想为我的 5
给出的示例找到一个解决方案。因为我不能在不删除第一个的情况下删除任何地方的 +
个标志。
编辑 2 我在评论部分再次询问我需要包含这样的 phone 格式:
6 (+65)92349577 => +6592348577
@WiktorStribiżew 建议使用以下正则表达式:s.gsub(/\A\(?(\+)|\D+/, '')
来自他的原始答案(被接受的答案)
解决方案是捕获第一个 +
并匹配所有其他 non-digit 符号:
s.gsub(/\A(\+)|\D+/, '')
图案详情:
\A(\+)
- 在字符串 (\A
)|
- 或\D+
- 一个或多个数字以外的字符。
替换中的</code>是对捕获组#1中存储的内容的反向引用,它恢复了替换结果</p>中的初始<code>+