Подтвердить что ты не робот

Регулярное выражение для буквенно-цифровых, -, _ и пробелов

Я ищу регулярное выражение для разрешения буквенно-цифровых символов -, _ или пробелов в JavaScript/jQuery. Я попробовал Google, но не смог найти это.

Кто-нибудь может мне помочь с этим?

Заранее спасибо.

4b9b3361

Ответ 1

Попробуйте это регулярное выражение:

/^[a-z\d\-_\s]+$/i

Ответ 2

Наборы символов помогут здесь тонну. Вы хотите создать соответствующий набор для символов, которые вы хотите проверить:

  • Вы можете сопоставлять буквенно-числовые символы с \w, что совпадает с [A-Za-z0-9_] в JavaScript (другие языки могут отличаться).
  • Это оставляет - и пробелы, которые можно объединить в соответствующий набор, такой как [\w\- ]. Однако вам может потребоваться использовать \s вместо просто символа пробела (\s также соответствует вкладкам и другим формам пробелов)
    • Обратите внимание, что я избегаю - как \-, так что механизм regex не путает его с диапазоном символов, например A-Z
  • Наконец, вы, вероятно, хотите убедиться, что вся строка соответствует путем привязки к началу и концу через ^ и $

Полное регулярное выражение, которое вы, вероятно, ищете:

/^[\w\-\s]+$/

(Обратите внимание, что + указывает, что для него должен быть хотя бы один символ, вместо этого используйте * если строка нулевой длины также нормально)

Наконец, http://www.regular-expressions.info/ является замечательной ссылкой


Бонусные баллы: Это регулярное выражение не соответствует альфам, отличным от ASCII. К сожалению, движок регулярных выражений в большинстве браузеров не поддерживает именованные наборы символов но для этого есть несколько библиотек.

Для языков/платформ, поддерживающих именованные наборы символов, вы можете использовать /^[\p{Letter}\d\_\-\s]+$/

Ответ 3

/^[-\w\s]+$/

\w соответствует буквам, цифрам и символам подчеркивания

\s соответствует пробелам, вкладкам и разрывам строки

- соответствует дефис (если у вас есть дефис в примере набора символов [a-z], обязательно поместите дефис в начале так же [-a-z])

Ответ 4

var string = 'test- _ 0Test';
string.match(/^[-_ a-zA-Z0-9]+$/)

Ответ 5

var regex = new RegExp("^[A-Za-z0-9? ,_-]+$");
            var key = String.fromCharCode(event.charCode ? event.which : event.charCode);
            if (!regex.test(key)) {
                event.preventDefault();
                return false;
            }

в regExp [A-Za-z0-9?spaceHere,_-] после знака вопроса '?' имеется буквальное пространство. Это соответствует пробелу. Другие, такие как /^[-\w\s]+$/ и /^[a-z\d\-_\s]+$/i, не работали для меня.

Ответ 6

Для меня я хотел регулярное выражение, которое поддерживает строки как предыдущие. По сути, мотивом является поддержка почтового формата в некоторых зарубежных странах, так как он должен быть буквенно-цифровым с пробелами.

  1. ABC123
  2. ABC 123
  3. ABC123 (пробел)
  4. ABC 123 (пробел)

В итоге я написал пользовательское регулярное выражение, как показано ниже.

/^([a-z]+[\s]*[0-9]+[\s]*)+$/i

enter image description here

Здесь я указал * in [\s]* как не обязательно иметь пробел. В моем случае почтовый индекс может содержать или не содержать пробел.

Ответ 7

Попробуйте это регулярное выражение

* Обновлено регулярное выражение

/^[a-z0-9]+([-_\s]{1}[a-z0-9]+)*$/i

Это позволит только один пробел или - или _ между текстом

Ex: this-some abc123_regex

Чтобы узнать: https://regexr.com

* Примечание: я обновил регулярное выражение на основе вопроса Toto