#regex #html
#регулярное выражение #HTML
Вопрос:
В форме html мне нужна текстовая область, которая допускает любой тип текста: цифры, символы, перевод строки или буквы, включая буквы иврита. Единственные два правила:
- Входные данные должны включать строку: «{ser}»
- Входные данные должны запрещать любое использование «{» или «}», за исключением приведенной выше строки
Я пробовал это:
<form action="#">
...
<textarea pattern="[^{}]*{ser}[^{}]*" required>
האם אתה נמצא בשבת הקרובה? אם כן נא השב {ser} שם מלא
</textarea>
...
<input type="submit" />
...
</form>
Но по какой-то причине это также позволяет отправлять тексты, которые не соответствуют правилам. Я был бы признателен за вашу помощь.
Комментарии:
1. У вас есть
patten
, неpattern
.
Ответ №1:
Вы не можете использовать pattern
атрибут в текстовых областях, смотрите документацию.
maxlength задает максимальное количество символов, которое разрешено содержать. Вы также можете установить минимальную длину, которая считается допустимой, используя атрибут minlength, и указать, что значение не будет отправлено (и является недействительным), если оно пустое, используя требуемый атрибут. Это обеспечивает простую проверку, которая является более базовой, чем другие элементы формы (например, вы не можете предоставить конкретные регулярные выражения для проверки значения на соответствие использованию атрибута шаблона, как вы можете с элементом ввода).
Возможно, реализовать соответствие регулярных выражений с помощью javascript?
function validateTextarea(text) {
var re = /ser/g;
var result = text.match(re);
if(result != null amp;amp; result.length > 0)
// Do something
}
Тогда, вероятно, лучший способ — проверить функцию в onsubmit
атрибуте формы.