Rails 4:英国数字的HTML模式 - 移动或固定电话

时间:2015-02-23 11:14:04

标签: ruby-on-rails ruby regex

英国号码系统以01开头。手机:07和固定电话:01共有11个号码。我看过http://regexlib.com/Search.aspx?k=uk+mobile+phone&c=-1&m=-1&ps=20&AspxAutoDetectCookieSupport=1,但在我的Zurb Foundation 5应用程序中都没有。

我也尝试过:

pattern: "[(01|07|077)\s?\d{2}\s?\d{6}]"

但没有。有什么帮助吗?

我的问题是,如何让用户输入一个仅以01和07开头的11位数字?

我的表单字段:

        <%= f.label :phone_number, 'Phone' %>
        <%= f.text_field :phone_number, placeholder: "Only you and employers will see this ;)", required: true, pattern: "[?:01|07)\s?\d{2}\s?\d{7]" %>
        <small class="error">Numbers only.</small>

2 个答案:

答案 0 :(得分:1)

由于有更多类型的数字格式,如VOIP,我建议您选择一个gem来为您进行验证工作。查看基于Google phonelib gem

libphonenumber

如果您的应用仅使用英国号码,您可以在initializer config/initializers/phonelib.rb

中进行设置
Phonelib.default_country = "UK"

在您的模型中,您只需要验证:

validates :attribute, phone: true

否则你需要通过国家验证,如下所示:

Phonelib.valid_for_country? '123456789', 'UK'   # checks if passed value is valid number for specified country

答案 1 :(得分:0)

似乎(?:01|07)\\s?\\d{2}\\s?\\d{7}可以成为答案。

(?:01|07) ' "01" or "07" \\s? ' Optional space \\d{2} ' 2 digits exactly \\s? ' Optional space \\d{7} ' 7 digits exactly

总共,您使用此模式测试了11位数字。 在Zurb Foundation的特定情况下,你需要逃避&#34; \&#34; s。

这是test