#html #regex
#HTML #регулярное выражение
Вопрос:
Я пытаюсь создать шаблон, который позволит вводить такие данные, как SB 0023467-01
или ST 0023467-02
<input type="text" name="surat_beranak" pattern="[S] [Bs] [0-9]{7} [-] [0] [^0-1]"
oninvalid="this.setCustomValidity('Format SB 0029384-01')"value="<?= $surat_beranak;?>"
class="form-control" placeholder="Enter Surat Beranak Number" required>
Это мой текущий шаблон ввода, но он работает не так, как предполагалось. Мне нужна помощь, когда шаблон будет разрешен только S
как первая буква, затем B
или T
как вторая буква, а затем иметь пробел после. Тогда будет 7 цифровых цифр, за которыми следуют тире и число, 0
затем 1
или 2
Ответ №1:
Вы используете
between every character, что позволяет повторять символ много раз. Это эквивалентно использованию {1,}
. [0-9]{7}
недопустимо.
Вы используете квадратные скобки, позволяющие использовать разные символы в одном и том же месте. Хорошим местом для их использования было бы для начала: S[BT]
разрешил бы SB или ST. Нет необходимости заключать отдельные символы в эти скобки.
Ваш текущий шаблон заканчивается [^0-1]
, что означает «каждый символ, кроме 0 и 1». Это противоречит вашей цели иметь «01» или «02» в конце.
Ваш шаблон в HTML будет S[BT] [0-9]{7}-0[12]
.Если вы используете этот шаблон где-либо еще, вы должны поместить его между ^
и $
, чтобы разрешить только тот ввод, который вы хотите, и ничего больше.
В будущем, пожалуйста, используйте тестеры регулярных выражений для тестирования вашего шаблона. Пример с рабочим шаблоном и несколькими примерами ввода.
Комментарии:
1. Большое вам спасибо за ответ, в следующий раз я постараюсь лучше задать вопрос и убедиться, что у меня правильные теги.