/[a-z]/
Так что это значит?Совпадение одного символа из az.
Все ваши записи массива, кроме третьей, удовлетворяют этому требованию.Следовательно, все совпадают.
Теперь, если вы хотите заключить свое регулярное выражение в якоря:
/^[a-z]$/
Это будет соответствовать только началу строки, за которой следует одна буква, за которой следует конецстроки, т. е. ваша вторая запись в массиве.
Редактировать:
Вы запросили разницу в ^ внутри и снаружи скобки:
Когда ^
вне скобки, само по себе это означает начало строки.Если вы избегаете его \^
, это означает буквальное совпадение с символом ^.
Когда ^
находится внутри скобок, таких как:
[^a-z]
, это фактически отрицает этот символкласс, что означает, что вы должны соответствовать чему-то, что НЕ является символом во франции a-z
.Так что это может соответствовать, например, 9
, A
, #
и т. Д. Наконец, когда ^
находится внутри класса символов, но не на первой позиции:
[a-z^]
он теряет свое особое значениеотрицания, и это буквальный ^
символ.Таким образом, класс символов теперь соответствует либо одному символу из диапазона az, либо ^
.