#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:
Вы можете использовать
^[ -~]*$
, этот шаблон соответствует любым печатаемым символам ASCII без возврата каретки и символам перевода строки, потому что они просто выходят за пределы этого диапазона.
Посмотрите эту демонстрацию регулярных выражений.
^[ -~rn]*$
подойдет, потому-~
что определяет диапазон, описанный выше перевод строки и возврат каретки.
Посмотрите эту демонстрацию регулярных выражений.
Кроме того, проверьте коды таблиц ASCII, чтобы увидеть, что включено в указанные выше диапазоны.
Ответ №2:
Вы пропускаете r
(возвратную каретку) во втором
/^(?=[nr-~])[^013014016-037]*$/
Комментарии:
1.
[nr-~]
Допускает некоторые непечатаемые символы из-
-за unescape , и если вы экранируете его, он все равно не будет работать должным образом, поскольку он будет соответствовать только LF, CR-
или~