RegEx для Javascript, чтобы разрешить только буквенно-цифровой - PullRequest
199 голосов
/ 23 декабря 2008

Мне нужно найти регистр ex, который позволяет только буквенно-цифровой. Пока что все, что я пробую, работают, только если строка буквенно-цифровая, то есть содержит как букву, так и цифру. Я просто хочу один, который позволил бы и то, и другое, и не требовал бы обоих.

Ответы [ 12 ]

426 голосов
/ 23 декабря 2008
/^[a-z0-9]+$/i

^         Start of string
[a-z0-9]  a or b or c or ... z or 0 or 1 or ... 9
+         one or more times (change to * to allow empty string)
$         end of string    
/i        case-insensitive
133 голосов
/ 07 марта 2011

Если вы хотите вернуть замененный результат, то это будет работать:

var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);

Это вернет:

Test123TEST

Обратите внимание, что gi необходим, потому что он означает глобальный (не только при первом совпадении) и без учета регистра, поэтому у меня вместо a-zA-Z есть a-z. А ^ в скобках означает «что-то не в этих скобках».

ВНИМАНИЕ: Буквенно-цифровое отлично, если это именно то, что вы хотите. Но если вы используете это на международном рынке, например, имя человека или географическую область, то вам необходимо учитывать символы Юникода, что не сработает. Например, если у вас есть имя, подобное «Álvarö», это сделает его «lvar».

75 голосов
/ 23 декабря 2008

Используйте слово символьный класс. Следующее эквивалентно ^[a-zA-Z0-9_]+$:

^\w+$

Пояснение:

  • ^ начало строки
  • \ w любой символ слова (A-Z, a-z, 0-9, _).
  • $ конец строки

Используйте /[^\w]|_/g, если вы не хотите совпадать с подчеркиванием.

33 голосов
/ 29 августа 2011
/^([a-zA-Z0-9 _-]+)$/

приведенное выше регулярное выражение разрешает пробелы в строке и ограничивает специальные символы. a-z, A-Z, 0-9, пробел, подчеркивание и тире.

12 голосов
/ 23 декабря 2008
^\s*([0-9a-zA-Z]*)\s*$

или, если вы хотите минимум один символ:

^\s*([0-9a-zA-Z]+)\s*$

Квадратные скобки обозначают набор символов. ^ начало ввода. $ является концом ввода (или новой строки, в зависимости от ваших параметров). \ s - это пробел.

Пробелы до и после не обязательны.

Скобки - это оператор группировки, позволяющий вам извлекать нужную информацию.

РЕДАКТИРОВАТЬ: удалено мое ошибочное использование набора символов \ w.

6 голосов
/ 01 июля 2016

Это будет работать

^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$

Допускаются только символы алфавита:
пройденных тестовых случаев:

dGgs1s23 - valid
12fUgdf  - valid,
121232   - invalid, 
abchfe   - invalid,
 abd()*  - invalid, 
42232^5$ - invalid

или

Вы также можете попробовать это. этому выражению соответствует хотя бы один номер, один символ и никаких других специальных символов

^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$

в угловых может проверить, как:

$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);

PLUNKER DEMO

Ссылка: Регулярное выражение для буквенно-цифровых символов в Angularjs

4 голосов
/ 28 января 2016

Расширение прототипа строки для использования в вашем проекте

    String.prototype.alphaNumeric = function() {
        return this.replace(/[^a-z0-9]/gi,'');
    }

Использование:

    "I don't know what to say?".alphaNumeric();
    //Idontknowwhattosay
4 голосов
/ 19 октября 2015

Вместо проверки правильности буквенно-цифровой строки, вы можете достичь этого косвенно, проверяя строку на наличие недопустимых символов. Сделайте это, проверив все, что соответствует дополнению действительной буквенно-цифровой строки.

/[^a-z\d]/i    

Вот пример:

var alphanumeric = "someStringHere";
var myRegEx  = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));

Обратите внимание на логический оператор not на isValid, так как я проверяю, является ли строка ложной, а не действительна ли она.

2 голосов
/ 16 июля 2018

Введите этот код в свою SCRATCHPAD и посмотрите действие.

var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');
2 голосов
/ 08 февраля 2018

Попробуйте это ... Замените свой идентификатор поля на #name ... а-я (а-я), А-Я (от А до Я), 0-9 (от 0 до 9)

jQuery(document).ready(function($){
    $('#name').keypress(function (e) {
        var regex = new RegExp("^[a-zA-Z0-9\s]+$");
        var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
        if (regex.test(str)) {
            return true;
        }
        e.preventDefault();
        return false;
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...