2015-05-06 5 views
0

Я работаю над flex и с помощью regExp для проверки значения, введенного из пользовательского интерфейса. Я хочу убедиться, что введенное значение не имеет никаких управляющих символов и будет давать предупреждение на основе этого. Поскольку мы поддерживаем многие языки, я не могу иметь регулярное выражение, которое имеет все возможные положительные значения, поэтому мне нужно использовать регулярное выражение для управления черными списками. Я пробовал ^[^\x00-\x1F\x7F\u2028\u2029]*$, но он успешно совпадает, если есть обычный символ, отличный от управляющего. Я хочу, чтобы он не возвращал совпадений, если присутствует только один управляющий символ. Что я должен изменить в этом регулярном выражении?Регулярное выражение, чтобы избежать управляющих символов

Поблагодарите за помощь.

+0

Управляющих символы в '[\ x01- \ x1A]' диапазоне. Итак, попробуйте '^ [^ \ x01- \ x1A] + $'. См. Http://www.regular-expressions.info/nonprint.html. Вы можете –

+0

. Ваше регулярное выражение не должно совпадать, если вы кормите его смешанной строкой символов контрроля и без управления (если бы вы сбросили привязки). – collapsar

ответ

0

Вы можете использовать следующий трюк (поместить отрицание набора в упреждающей выборке с последующим . и захватом в целом):

^((?=[^\x00-\x1F\x7F\u2028\u2029]).)*$ 
+0

Это не работает для ab • ◘ ○ cd, где символы между ab и cd являются управляющими символами. Я проверил его на https://regex101.com/#javascript. Он показывает совпадение, пока он не должен показывать совпадение. – sapa

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