У меня есть поле названия должности в форме, где я хочу разрешить ответ, содержащий только буквы и цифры, где требуется хотя бы одна буква, а любые числа необязательны. Я использую следующий шаблон в своем теге ввода:
pattern = "\w*[a-zA-Z]\w*"
Этот шаблон проверяется на тестерах RegEx, которые я пытался использовать, но когда я предоставляю ответ в своей форме «Менеджер 2», он не позволяет мне продолжить. Есть ли что-то другое в том, как браузеры интерпретируют
С чем не получается? Если вы планируете также поддерживать пробелы, попробуйте pattern = "[0-9\s]*[a-zA-Z][a-zA-Z0-9\s]*".
Manager 2 содержит пробел, а затем 2, но для вашего шаблона требуется как минимум 2 символа. Попробуйте \w*[a-zA-Z]\w*(?: \w+)*





Если вы используете атрибут шаблона в форме, подразумеваются ^ и $, поэтому оно будет соответствовать всему значению. Ваш шаблон \w*[a-zA-Z]\w* соответствует как минимум одному символу az, но не пробелу.
Если вы хотите сопоставить Manager 2, вы можете использовать свой шаблон, за которым следует группа, которая повторяется 0+ раз, совпадая с пробелом и 1+ символами слова.
\w*[a-zA-Z]\w*(?: \w+)*
См. демонстрация регулярных выражений
Обратите внимание, что \w также соответствует символу подчеркивания.
Немного более широкий шаблон, позволяющий использовать несколько пробелов, а также в конце:
^\w*[a-zA-Z][ \w]*
Ваше исходное выражение просто прекрасно, и ему не хватает места. Здесь мы можем начать с простого шаблона, может быть, что-то похожее на:
[A-Za-z\s0-9]+
Если было необходимо, мы могли бы добавить группу захвата вокруг него, чтобы сохранить наши данные в $1:
([A-Za-z\s0-9]+)
Если это выражение не нужно, его можно изменить или изменить в regex101.com.
jex.im визуализирует регулярные выражения:
const regex = /([A-Za-z\s0-9]+)/gm;
const str = `Manager 2`;
let m;
while ((m = regex.exec(str)) !== null) {
// This is necessary to avoid infinite loops with zero-width matches
if (m.index === regex.lastIndex) {
regex.lastIndex++;
}
// The result can be accessed through the `m`-variable.
m.forEach((match, groupIndex) => {
console.info(`Found match, group ${groupIndex}: ${match}`);
});
}
Покажите нам пример ввода, где он терпит неудачу...