Подтвердить что ты не робот

Как проверить строку содержит специальный символ в рубине

Как проверить, содержит ли строка специальный символ в ruby. Если я получаю регулярное выражение, это также хорошо.

Пожалуйста, дайте мне знать

4b9b3361

Ответ 1

special = "?<>',?[]}{=-)(*&^%$#`~{}"
regex = /[#{special.gsub(/./){|char| "\\#{char}"}}]/

Затем вы можете использовать регулярное выражение для проверки, содержит ли строка специальный символ:

if some_string =~ regex

Это выглядит несколько сложнее: что происходит в этом бите

special.gsub(/./){|char| "\\#{char}"

- это

"?<>',?[]}{=-)(*&^%$#`~{}"

в это:

"\\?\\<\\>\\'\\,\\?\\[\\]\\}\\{\\=\\-\\)\\(\\*\\&\\^\\%\\$\\#\\`\\~\\{\\}"

Каждый символ в специальном, экранированный с помощью \ (который сам бежит в строке, т.е. \\ not \). Затем он используется для создания регулярного выражения следующим образом:

/[<every character in special, escaped>]/

Ответ 2

Используйте str.include?.

Возвращает true, если str содержит заданную строку или символ.

"hello".include? "lo"   #=> true
"hello".include? "ol"   #=> false
"hello".include? ?h     #=> true

Ответ 3

"foobar".include?('a')
# => true

Ответ 4

Почему бы не использовать инверсию [:alnum:] posix.

Здесь [:alnum:] включает все 0-9, a-z, a-z.

Подробнее здесь.

Ответ 5

Как насчет этой команды в Ruby 2.0.0 и выше?

def check_for_a_special_charachter(string)   
  /\W/ === string
end

Следовательно, при:

!"[email protected]"[/\W/].nil?  => True

!"Hello"[/\W/].nil?   => False

Ответ 6

"[email protected]".index( /[^[:alnum:]]/ )

Это вернет nil, если у вас нет специального символа, и, следовательно, я думаю, что это возможно.