2011-07-16 2 views
0

У меня никогда не было головы вокруг с использованием регулярных выражений, поэтому у меня есть проблема с пониманием того, почему мое приведенное ниже регулярное выражение. позволяет не только ниже перечисленные символы:Regexp: Почему моя фильтрация регулярного выражения не работает правильно?

  • AZ & аз (верхний & ниже)
  • Aao & Aao
  • 0-9 & подчеркивание (_)

Вот регулярное выражение :

/^[\s\da-0-9-zA-ZåäöÅÄÖ_]$/i 

Что я делаю неправильно?

+0

'\ d' и' 0-9' являются избыточными. –

ответ

1

Потому что это a-0-9-z в обратном порядке. Используйте это: ^[\s\da-zA-ZåäöÅÄÖ_]$ или это: (?i)^[\s\da-zåäö_]$ с опцией «игнорировать регистр», которая включена.

Также вы можете использовать специальный символ \w, что означает: letters, digits, and underscores

В вы Regex вы используете \d и 0-9. \d включает 0-9 см Explanation

+0

Привет! Это все еще позволяет использовать специальные символы, такие как '@' & '&' ... – Industrial

+0

@ Промышленный, Что вы имеете в виду? –

+0

Выполнение регулярного выражения, которое вы предоставили ('^ [\ s \ da-zA-ZåäöÅÄÖ_] $'), с строкой, содержащей '&' или '&', не фильтрует '&' или '&' out, поскольку мне нужно – Industrial

0

Является ли выражение здесь дословной копией? Потому что в

/^[\s\da-0-9-zA-ZåäöÅÄÖ_]$/i 

у вас есть

a-0-9-zA-Z 

, где вы, вероятно, означает

0-9a-zA-Z 
0

ошибка является а-0-9 г, которая должна быть а-z0-9

Кроме того, вы можете l ose 0-9, потому что вы использовали \ d, и вы можете использовать \ w для любого символа слова.

0

Это регулярное выражение будет соответствовать знаковой строке знака и регистрозависимости в следующем: любой пробел, любая цифра (0-9), любая буква (a-ZA-Z) и одна из åäöÅÄÖ_.

0

Незнайки о латинском, но вам не нужно 0-9, если вы используете \d, также, вам не нужно a-zA-Z, если вы используете /i флаг, который делает все, без учета регистра, чтобы вы могли оставить только a-z.

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