Ваш текущий шаблон соответствует строке, которая начинается с a
или A
и имеет строго 6 цифр.^
является избыточным в регулярном выражении pattern
, так как оно привязано по умолчанию.
Таким образом, фактически текущее регулярное выражение равно ^[Aa]\d{6}$
, и для записи обратного шаблона HTML5 вы можете использовать
pattern="(?![aA]\d{6}$).*"
Этот шаблон будет проанализирован как шаблон /^(?:(?![aA]\d{6}$).*)$/
(с модификатором u
в Chrome, Firefox и других браузерах, поддерживающих эту функцию).
При отрицательном прогнозе (?![Aa]\d{6}$)
произойдет сбой любой строки, которая начинается с a
или A
и затем имеет 6 цифр до конца.
.*
соответствует любым 0+ символам,Используйте .+
, чтобы соответствовать любому 1 или более символовЭта часть является обязательной, поскольку регулярное выражение HTML5 должно соответствовать всему вводу.
HTML5 demo:
input:valid {
color: black;
border: 5px solid #dadadada;
border-radius: 7px;
}
input:invalid {
color: navy;
outline: none;
border-color: #ff1050;
box-shadow: 0 0 10px #ff0000;
}
<form name="form1">
<input pattern="(?![aA]\d{6}$).*" title="Please enter a valid string." placeholder="Please enter valid text" />
<input type="Submit"/>
</form>