2015-02-12 4 views
-2

Мне нужно проверить поле ввода с помощью регулярного выражения, но поле ввода не должно присутствовать в этих символах ;*&%^="".Regex для отклонения определенного символа * &%^= ""

Как я новичок в Regex Так

Regex, который я написал это \A.+[a-z0-9A-Z]+\Z, но не проверяет

Как @Avinash Раджа уже решить эту проблему, как это работа для меня ^[^;*&%^="]+$

Благодаря @Avinash Радж

+0

Вы должны добавить некоторую информацию, как то, что является допустимым протоколом адреса и некоторые примеры (которые проходят или пропустить тест) для вашего (и то же для FUTUR) вопрос. – NeronLeVelu

+0

Я должен видеть вещи. :-) (Зеленый - это то место, где он принадлежит.) –

ответ

4

Используйте отрицание класса символов.

^[^;*&%^="]+$ 

Это соответствует любому символу один или несколько раз, но не тот, который присутствует внутри класса символов с отрицанием.

  • ^ утверждает, что мы находимся в начале линии.
  • [^...] Отрицательный класс символов, который соответствует любому символу, но не та, которая присутствует внутри этого класса символов.
  • + после того, как класс char повторил класс char один или несколько раз.
  • $ Утверждается, что мы находимся в конце строки.
+2

'^' не утверждает, что мы начинаем строку, он утверждает, что мы находимся в начале строки *; Аналогично, '$' означает конец строки *, а не конец строки. Вам нужно «\ A» и «\ z» для начала и конца всей строки. –

+0

yep, не удалось добавить строку 'line' на выше. –

+1

Cheat! Вы заменили несколько многобайтовых символов. Я никогда этого не сделаю. –

1

Другой способ:

str = "Why won't this *!&!!* code run??!" 
str.tr('*&%^"=', '') == str #=> false 

str = "Now it works, but I have no idea why!!" 
str.tr('*&%^"=', '') == str #=> true 
Смежные вопросы