ruby - Validation of a username with regex -
trying solve regex sign-on problem. here rules:
- allowed characters are: lowercase letters, numbers, underscore.
- length should between 4 , 16 characters.
here test cases must pass:
test.describe("basic tests") test.assert_equals(validate_usr('asddsa'), true) test.assert_equals(validate_usr('a'), false) test.assert_equals(validate_usr('hass'), false) test.assert_equals(validate_usr('hasd_12assssssasasasasasaasasasasas'), false) test.assert_equals(validate_usr(''), false) test.assert_equals(validate_usr('____'), true) test.assert_equals(validate_usr('012'), false) test.assert_equals(validate_usr('p1pp1'), true) test.assert_equals(validate_usr('asd43 34'), false) test.assert_equals(validate_usr('asd43_34'), true) end
this code:
def validate_usr(username) if (username.length > 3 && username == username.downcase) return true elsif username.include?(" ") == true return false else return false end end
running issues test case 9 has space involved. returns true
.
test case 9 returns true
because satisfies username.length > 3 && username == username.downcase
. note " ".downcase == " "
here.
move return false if username.include?(" ")
, should work. suggest using regex
though.
def validate_usr(username) /\a[a-z0-9_]{4,16}\z/ === username end
Comments
Post a Comment