Как написать буквенно-цифровой шаблон в HTML5?

У меня есть поле названия должности в форме, где я хочу разрешить ответ, содержащий только буквы и цифры, где требуется хотя бы одна буква, а любые числа необязательны. Я использую следующий шаблон в своем теге ввода:

pattern = "\w*[a-zA-Z]\w*"

Этот шаблон проверяется на тестерах RegEx, которые я пытался использовать, но когда я предоставляю ответ в своей форме «Менеджер 2», он не позволяет мне продолжить. Есть ли что-то другое в том, как браузеры интерпретируют

Покажите нам пример ввода, где он терпит неудачу...

ruohola 22.05.2019 22:16

С чем не получается? Если вы планируете также поддерживать пробелы, попробуйте pattern = "[0-9\s]*[a-zA-Z][a-zA-Z0-9\s]*".

Wiktor Stribiżew 22.05.2019 22:16
Manager 2 содержит пробел, а затем 2, но для вашего шаблона требуется как минимум 2 символа. Попробуйте \w*[a-zA-Z]\w*(?: \w+)*
The fourth bird 22.05.2019 22:18
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
3
89
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Если вы используете атрибут шаблона в форме, подразумеваются ^ и $, поэтому оно будет соответствовать всему значению. Ваш шаблон \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}`);
    });
}

ДОМО

Другие вопросы по теме