2016-02-16 3 views
4

У меня есть регулярное выражение, которое соответствует всем символам ASCII:символы матч ASCII, за исключением нескольких символов

/^[\x00-\x7F]*$/ 

Сейчас мне нужно исключить из этого диапазона следующих символов: ', ". Как мне это сделать?

+0

Вы можете обратиться по этой ссылке: http://stackoverflow.com/questions/1127739/exclude-certain-characters-using-regex – bitsugar

ответ

2

Вы можете использовать отрицательный предпросмотр для отвергнутых символов:

/^((?!['"])[\x00-\x7F])*$/ 

RegEx Demo

(?!['"]) отрицательно опережение запретить одиночные/двойные кавычки в вашем входе.

+0

не могли бы вы подробно объяснить, как этот негативный взгляд работает в этом конкретном регулярном выражении? Я прочитал [этот учебник] (http://www.regular-expressions.info/lookaround.html) на поисковых системах, но, похоже, не может понять, как это работает. В частности, мне интересно, почему это не применяется только к одному персонажу. Заранее спасибо! –

+0

'['"] 'будет соответствовать' '' или '' '. '(?! ['"]) '- отрицательный lookahead, который утверждает, что следующая позиция символа не' '' и '' ' – anubhava

+0

спасибо, следующий символ после чего? –

2

Вы можете исключить символы из диапазона, делая

/^(?![\.])[\x00-\x7F]*$/ 

приставки его (?![\.]) к Exlude . от матча регулярного выражения.

или в сценарии

/^(?!['"])[\x00-\x7F]*$/ 

Edit:

завернуть регулярное выражение в фигурных скобках, чтобы соответствовать его несколько раз

/^((?!['"])[\x00-\x7F])*$/ 
+0

Нет, не так. '^ (?! [\.]) [\ x00- \ x7F] * $' соответствует некоторым строкам, которые не начинаются с периода. И '' \ '' избыточен в классе символов. –

+0

@ WiktorStribiżew спасибо, исправил то же самое, чтобы соответствовать ему несколько раз. – gurvinder372

+0

Хм теперь ваш отредактированный ответ стал таким же, как у меня – anubhava

1

ИМО далеко простейшего решения:

/^[\x00-\x21\x23-\x26\x28-\x7F]*$/ 
Смежные вопросы