Существует проблема с подходом регулярных выражений, общим для всех масок ввода: одиночный ввод символа полностью не знает контекста.Вы можете определить специальный шаблон только для одного ввода символов, например, если вы хотите, чтобы первый символ был S
, вы можете определить его внутри definitions
, но он не будет знать, что последует за ним или что предшествует ему,
Таким образом, вы не можете определить шаблон с несколькими символами для символа подстановки, и вам необходимо использовать дополнительный механизм проверки вместе с маской.
Например, вы можете использовать входную проверку HTML5 pattern
сообщить пользователю, что шаблон недействителен:
<input type="text" pattern="(SC|NI|[0-9]{2})[0-9]{6}" title="Wrong input!">
См. демонстрационный пример HTML5:
<form name="form1">
<input pattern="(SC|NI|[0-9]{2})[0-9]{6}" title="Wrong input!" />
<input type="Submit"/>
</form>
pattern="(SC|NI|[0-9]{2})[0-9]{6}"
(он будет скомпилирован как /^(?:(SC|NI|[0-9]{2})[0-9]{6})$/
с модификатором u
в FF и Chrome) будет соответствовать любому входу, который соответствует
^
- начало строки (неявное) (SC|NI|[0-9]{2})
- SC
, NI
или 2 цифры [0-9]{6}
- 6 цифр $
- конец строки (неявный).