Adds :ukzip to built in validator.

This commit is contained in:
Mark Rickert
2015-02-06 19:42:45 -05:00
parent 3e1e1b2782
commit 3bd1d87e16
2 changed files with 24 additions and 0 deletions

View File

@@ -130,6 +130,8 @@ module RubyMotionQuery
TIME = Regexp.new('^(20|21|22|23|[01]\d|\d)((:[0-5]\d){1,2})$')
# Future Password strength validations -> http://stackoverflow.com/questions/5142103/regex-for-password-strength
USZIP = Regexp.new('^\d{5}(-\d{4})?$')
# UK Postal Code regex from: http://stackoverflow.com/a/7259020/814123
UKZIP = Regexp.new('^(GIR ?0AA|[A-PR-UWYZ]([0-9]{1,2}|([A-HK-Y][0-9]([0-9ABEHMNPRV-Y])?)|[0-9][A-HJKPS-UW]) ?[0-9][ABD-HJLNP-UW-Z]{2})$')
# 7 or 10 digit number, delimiters are spaces, dashes, or periods
USPHONE = Regexp.new('^(?:(?:\+?1\s*(?:[.-]\s*)?)?(?:(\s*([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9])\s*)|([2-9]1[02-9]|[2-9][02-8]1|[2-9][02-8][02-9]))\s*(?:[.-]\s*)?)?([2-9]1[02-9]|[2-9][02-9]1|[2-9][02-9]{2})\s*(?:[.-]\s*)?([0-9]{4})$')
# Strong password (at least [8 chars, 1 upper, 1 lower, 1 number])
@@ -150,6 +152,7 @@ module RubyMotionQuery
:ipv4 => lambda { |value, opts| Validation.regex_match?(value, IPV4)},
:time => lambda { |value, opts| Validation.regex_match?(value, TIME)},
:uszip => lambda { |value, opts| Validation.regex_match?(value, USZIP)},
:ukzip => lambda { |value, opts| Validation.regex_match?(value.upcase, UKZIP)},
:usphone => lambda { |value, opts| Validation.regex_match?(value, USPHONE)},
:strong_password => lambda { |value, opts| Validation.regex_match?(value, STRONGPW)},
:has_upper => lambda { |value, opts| Validation.regex_match?(value, HASUPPER)},

View File

@@ -65,6 +65,27 @@ describe 'validation' do
@rmq.validation.valid?('K1A 0B1', :uszip).should == false
end
it 'can validate ukzip' do
# Zips with spaces
['TS4 2EP', 'DE55 7JW', 'DN31 3BL', 'KW9 6NQ', 'UB11 1FG', 'LS21 1FE', 'EC2P 2DS'].each do |code|
@rmq.validation.valid?(code, :ukzip).should == true
end
# Zips without spaces
['CT54FG', 'TA100PF', 'OX29EF', 'SS95FB', 'BT411LA', 'NN126QP', 'CF991NA', 'NP167NH', 'PE57XG'].each do |code|
@rmq.validation.valid?(code, :ukzip).should == true
end
# Invalid Zips
['32043', '90210-2344', 'OB29E', 'SS95B', 'BT11A'].each do |code|
@rmq.validation.valid?(code, :ukzip).should == false
end
# Lowercase zips
@rmq.validation.valid?('ts4 2ep', :ukzip).should == true
@rmq.validation.valid?('ct54fg', :ukzip).should == true
end
it 'can validate usphone' do
@rmq.validation.valid?('504 555 8989', :usphone).should == true
@rmq.validation.valid?('555 8989', :usphone).should == true