ASCII с возможностью печати регулярных выражений плюс перевод строки и возврат каретки

#javascript #regex

#javascript #регулярное выражение

Вопрос:

Я пишу функцию проверки на javascript для ввода данных. У меня есть два условия, которые мне нужно проверить.

Случай 1: все печатаемые символы ASCII от 32 до 126 Случай 2: все печатаемые символы ASCII от 32 до 126 плюс возврат каретки и новая строка.

Вот мое регулярное выражение для случая 1:

 /^(?=[ -~])[^rn]*$/
 

Подходит ли это для случая 2?

 /^(?=[n-~])[^013014016-037]*$/
 

Комментарии:

1. 1) Вам просто нужно ^[ -~]*$ , чтобы CR и LF выходили за пределы этого диапазона. 2) ^[ -~rn]*$ будет делать.

Ответ №1:

Вы можете использовать

  1. ^[ -~]*$ , этот шаблон соответствует любым печатаемым символам ASCII без возврата каретки и символам перевода строки, потому что они просто выходят за пределы этого диапазона.

Посмотрите эту демонстрацию регулярных выражений.

  1. ^[ -~rn]*$ подойдет, потому -~ что определяет диапазон, описанный выше перевод строки и возврат каретки.

Посмотрите эту демонстрацию регулярных выражений.

Кроме того, проверьте коды таблиц ASCII, чтобы увидеть, что включено в указанные выше диапазоны.

Ответ №2:

Вы пропускаете r (возвратную каретку) во втором

 /^(?=[nr-~])[^013014016-037]*$/
 

Комментарии:

1. [nr-~] Допускает некоторые непечатаемые символы из - -за unescape , и если вы экранируете его, он все равно не будет работать должным образом, поскольку он будет соответствовать только LF, CR - или ~