rails中的电话号码验证正则表达式

Din*_*aje 3 regex ruby-on-rails ruby-on-rails-4

嗨,我需要验证+1-541-754-3010 , (123) 986-5470 and 123-569-8740以下正则表达式后给出的这些格式的电话号码

validates :phone, format: { with: /\A\(?\d{3}\)?[- ]?\d{3}[- ]?\d{4}\z/,
                              message: I18n.t('global.errors.phone_format')}
Run Code Online (Sandbox Code Playgroud)

它适用于(123)986-5470和123-569-8740但不适用于

+1-541-754-3010
754-3010 Local
(541) 754-3010 Domestic
+1-541-754-3010 International
1-541-754-3010 Dialed in the US
001-541-754-3010 Dialed from Germany
191 541 754 3010 Dialed from France
Run Code Online (Sandbox Code Playgroud)

请指导我如何解决这个问题.谢谢

vks*_*vks 12

\A(?:\+?\d{1,3}\s*-?)?\(?(?:\d{3})?\)?[- ]?\d{3}[- ]?\d{4}\z
Run Code Online (Sandbox Code Playgroud)

您可以使用另一个可选组.请参阅演示.

https://regex101.com/r/fM9lY3/20