Почему не работает регулярное выражение /[–-А]/?
Я писал регулярное выражение, которое находит в строке символ, который является: длинным тире (–), обычным тире (-), или буквой 'А'.
Получился RegExp: /[–-А]/, но при его создании вылезает ошибка:
Uncaught SyntaxError: Invalid regular expression: /[–-А]/: Range out of order in character class
Если поменять тире местами - /[-–А]/, то выражение создаcтся без ошибок и будет корректно работать.
Подскажите пожалуйста, почему так получается? Почему /[–-А]/ даёт синтаксическую ошибку, а /[-–А]/ нормально работает?
Ответы (1 шт):
Символ - (минус) в регулярных выражениях имеет специальное значение.
В первом случае он воспринимается как обычный символ, т.к. стоит первым, и выражение /[-–А]/ означает искать один из трех символов.
Во втором выражении /[–-А]/ он означает диапазон значений, т.к. стоит вторым, и это значит - искать все символы от – до А, что некорректно, т.к. – больше А.
То есть, для второго случая его надо экранировать так: /[–\-А]/.