英国号码系统以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>
答案 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。