2013-07-31 2 views
-1

У меня есть этот метод, где я «помещаю» пользовательский ввод, который я хочу предотвратить.Подтвердите, что первый символ должен быть целым числом или буквой

def has_forbidden_prefix?(string) 
    string =~ %r{^(http://|www.)} 
end 

Если has_forbidden_prefix? это правда, чем я не хочу принимать входные данные.

Например:

Разрешено: google.com

Не допускается: www.google.com, http://google.com, http://www.google.com

Теперь я хочу, чтобы обнаружить также любые специальные символы, начинающиеся в моем методе.

Не допускается: .google.com, /google.com ...

Что я должен включить в моей регулярное выражение?

+5

Думаю, вам нужно добавить несколько строк, которые вы хотите сопоставить. Это немного неясно, если вы имеете в виду первый символ строки или первый символ после www или http: //. – jbr

+2

Любая строка, соответствующая вашему регулярному выражению, уже будет иметь первый символ в виде буквы (предположим, что она не является многострочной). – sawa

+0

благодаря добавленным примерам – crispychicken

ответ

0

Это регулярное выражение соответствует тому, что вы не хотите от previous question

Так расширяется, вы могли бы

def has_forbidden_prefix?(string) 
    disallowed_string = string =~ %r{\A(http://|www)} 
    non_alphanumeric = string =~ /\A[^a-zA-Z0-9]/ 

    disallowed_string || non_alphanumeric 
end 
+0

Это не позволяет мне писать 'google.com' – crispychicken

+0

Я забыл спецификатор' begining of-string' ('^') во втором регулярном выражении! Повторите попытку :) –

+0

Еще раз спасибо! :-) Но разве это не должно быть 0-9? – crispychicken

3

регулярное выражение, чтобы увидеть, если первый символ является алфавитно-цифровой или номер:

^[a-zA-Z0-9]

где^обозначает начало строки регулярное выражение применяется шаблон. Для получения дополнительной информации см. http://www.regular-expressions.info/reference.html

+0

Спасибо за ваше решение, это абсолютно правильно! Но у меня была ошибка в моем первоначальном вопросе. Я обновил его. – crispychicken

Смежные вопросы