JS RegEx допускает определенные символы и несколько символов только в части определенной последовательности

#javascript #regex

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

Вопрос:

В течение нескольких часов я боролся со следующим:

Я хочу использовать регулярное выражение с использованием JS, чтобы разрешить следующие символы:

 /^[a-zA-Z0-9 -.,]*$/igm
  

Однако я также хотел бы разрешить
или
, что означает, что я разрешил бы символ < amp; > и / , но только тогда, когда в любой из двух приведенных выше форм (
или
).
Я играл с чем-то вроде;

 /^(<(?=br />|br/>))*amp;/img
  

Очевидно, что это не работает, и я не могу понять, как проверить в одной строке кода, содержит ли пользовательский ввод (строка) только разрешенные символы плюс дополнительные символы (<,> ,/ ), но только при использовании как (
или
).

Ваша помощь очень ценится. Спасибо.

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

1. Используйте /^(?:<br ?/>|[a-zA-Z0-9 .,-])*$/

2. Да, Виктор, большое спасибо.

Ответ №1:

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

 ^(?:<br ?/>|[a-zA-Z0-9 .,-])*$
  

Подробные сведения

  • ^ — начало строки
  • (?:<br ?/>|[a-zA-Z0-9 .,-])* — ноль или более:
    • <br ?/> <br , необязательный пробел, />
    • | — или
    • [a-zA-Z0-9 .,-] — буква, цифра, пробел, точка, запятая или дефис
  • $ — конец строки.