2013-04-26 2 views
0

Мне нужно разрешить только буквы и некоторые символы. Я использую это регулярное выражение:Регулярное выражение разрешает запятые

([a-zA-Z '-_]*)$") 

Но это также позволяет , ; : .

Почему?

+1

Вы не начала матча до конца, вы могли бы попытаться вставить заголовок ''^(привязка для начала ввода). –

ответ

2

дефис (-) внутри класса символов обозначает диапазон, вы должны избежать этого с помощью обратной косой черты, изменив [a-zA-Z '-_] на следующее:

[a-zA-Z '\-_] 

Без этого движок регулярных выражений будет интерпретировать '-_ как диапазон персонажей из ' к _, который будет включать в себя следующие символы (http://www.asciitable.com/):

' () * + , - ./0 1 2 3 4 5 6 7 8 9 : ; <=> ? @ 
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ]^_ 

Вы, вероятно, также хотят чтобы добавить ^ в начало и $ в конец вашего регулярного выражения, это начало и конец привязок строк, и они не позволят вашему регулярному выражению совместить только часть строки.

+0

-1 Это также верно, потому что нет никаких ограничений $ и + для установки одного или нескольких символов. – Adidi

+0

Я интерпретировал проблему OP как «регулярное выражение, соответствующее запятым», что было бы невозможно после выхода из дефиса. Во всяком случае, я добавил примечание о якорях в редактировании (и, кстати, я не тот, который отклонил ваш ответ). –

+0

Если вы хотите совместить '-', вы также можете поместить его как незаменимый как самый первый символ в' [] 'like'/^ [- az] + $ /. Test ('a-little-thing') ' – neo

0

вы должны установить ^ на старте и $ в конце, чтобы заставить его быть только группа:

/^[a-zA-Z \'\-_]+$/.test('Adidi:') // false 
+1

почему -1?! Это правильный ответ ! '^ [a-zA-Z \ '\ -_] + $' – Adidi

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