Ответ 1
С /^[a-zA-Z]/
вы проверяете только первый символ:
-
^
: положение подтверждения в начале строки -
[a-zA-Z]
: сопоставьте один символ, присутствующий в списке ниже:-
a-z
: символ в диапазоне между "a" и "z" -
a-z
: символ в диапазоне между "A" и "Z"
-
Если вы хотите проверить, являются ли все символы буквами, используйте вместо этого:
/^[a-zA-Z]+$/.test(str);
-
^
: положение подтверждения в начале строки -
[a-zA-Z]
: сопоставьте один символ, присутствующий в списке ниже:-
+
: между одним и неограниченным временем, как можно больше, возвращаясь по мере необходимости (жадный) -
a-z
: символ в диапазоне между "a" и "z" -
a-z
: символ в диапазоне между "A" и "Z"
-
-
$
: позиция подтверждения в конце строки (или до разрыва строки в конце строки, если она есть)
Или, используя флаг без учета регистра i
, вы можете упростить его до
/^[a-z]+$/i.test(str);
Или, поскольку вы хотите только test
, а не match
, вы можете проверить на противоположное и отрицать его:
!/[^a-z]/i.test(str);