2016-02-03 7 views
0

Пытается решить проблему с регулярным выражением. Вот правила:Проверка имени пользователя с регулярным выражением

  • Допустимые символы: буквы нижнего регистра, цифры, символ подчеркивания.
  • Длина должна составлять от 4 до 16 символов.

Вот тестовые примеры он должен пройти:

Test.describe("Basic tests") do 
    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 

Это мой код:

def validate_usr(username) 
    if (username.length > 3 && username == username.downcase) 
    return true 
    elsif 
    username.include?(" ") == true 
    return false 
    else 
    return false 
    end 
end 

Запуск в вопросах с теста 9, который имеет место участие. Он возвращает true.

+0

В чем Ваш вопрос? – sawa

+2

вы должны убедиться, что он спрашивает, прежде чем редактировать и навязать свою интерпретацию вопроса. – cozyconemotel

ответ

2

Тестовый кейс 9 возвращает true, потому что он удовлетворяет username.length > 3 && username == username.downcase. Обратите внимание, что здесь " ".downcase == " ".

Переместите это return false if username.include?(" ") и оно должно работать. Я честно предлагаю использовать Regex.

def validate_usr(username) 
    /\A[a-z0-9_]{4,16}\z/ === username 
end 
+0

Не забудьте принять и/или проголосовать, если это помогло;) Это часть нашей мотивации к помощи людям здесь – cozyconemotel

+0

Используйте 'a! ~ B', а не' !! (a = ~ b) '. –

+0

@ Иордан, вы должны написать '! (A! ~ B)' в этом случае. Я думаю, что '!! (a = ~ b)' выглядит лучше. Но я понимаю. Возможно, если вы переименуете метод на 'reject_usr' или что-то еще и верните' a! ~ B', что было бы красивым и кратким. – cozyconemotel