Шаблону HTML5 нужна помощь в создании определенного шаблона для ввода

#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. Большое вам спасибо за ответ, в следующий раз я постараюсь лучше задать вопрос и убедиться, что у меня правильные теги.