RegEx для Javascript, чтобы разрешить только буквенно-цифровые

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

Ответ 1

/^[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

Ответ 2

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

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

Это вернет:

Test123TEST

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

ПРЕДУПРЕЖДЕНИЕ. Алфавитно-цифровое превосходно, если это именно то, что вы хотите. Но если вы используете это на международном рынке, например, как имя человека или географическую область, вам нужно учитывать символы юникода, чего этого не будет. Например, если у вас есть имя типа "Âlvarö", это сделает его "lvar".

Ответ 3

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

^\w+$

Пояснение:

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

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

Ответ 4

/^([a-zA-Z0-9 _-]+)$/

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

Ответ 5

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

или, если вам нужен минимум один символ:

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

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

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

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

EDIT: удалено мое ошибочное использование набора символов\w.

Ответ 6

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

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

Он принимает только символы alphanumeriuc:
тестовые примеры:

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

или

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

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

в angular может тестироваться как:

$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

Ответ 7

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

/[^a-z\d]/i    

Вот пример:

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

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

Ответ 8

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

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

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

    "I don't know what to say?".alphaNumeric();
    //Idontknowwhattosay

Ответ 9

Кажется, что многие пользователи заметили, что эти регулярные выражения почти наверняка потерпят неудачу, если мы не будем строго работать на английском языке. Но я думаю, что есть простой путь вперед, который не был бы таким ограниченным.

  1. сделайте копию своей строки во всех UPPERCASE
  2. сделать вторую копию строчными буквами

Любые символы, которые совпадают в этих строках, определенно не имеют буквенного характера.

let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
    let bIsAlphabetic = (copy1[i] != copy2[i]);
}

При желании вы также можете определять цифры, просто просматривая цифры от 0 до 9.

Ответ 10

Попробуйте это... Замените свой идентификатор поля на #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;
    });
});

Ответ 11

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

var str=String("Blah-Blah1_2,oo0.01&zz%kick").replace(/[^\w-]/ig, '');

Ответ 12

JAVASCRIPT принимает только цифры, буквы и специальные символы

document.getElementById("onlynumbers").onkeypress = function (e) {
	onlyNumbers(e.key, e)
};

document.getElementById("onlyalpha").onkeypress = function (e) {
	onlyAlpha(e.key, e)
};

document.getElementById("speclchar").onkeypress = function (e) {
	speclChar(e.key, e)
};

function onlyNumbers(key, e) {
	var letters = /^[0-9]/g; //g means global
	if (!(key).match(letters)) e.preventDefault();
}

function onlyAlpha(key, e) {
	var letters = /^[a-z]/gi; //i means ignorecase
	if (!(key).match(letters)) e.preventDefault();
}

function speclChar(key, e) {
	var letters = /^[0-9a-z]/gi;
	if ((key).match(letters)) e.preventDefault();
}
<html>
   <head></head>
   <body>
      Enter Only Numbers: 
      <input id="onlynumbers" type="text">
      <br><br>
      Enter Only Alphabets: 
      <input id="onlyalpha" type="text" >
      <br><br>
      Enter other than Alphabets and numbers like special characters: 
      <input id="speclchar" type="text" >
   </body>
</html>

Ответ 13

Еще лучше, чем Gayan Dissanayake.

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

Теперь ^[a-zA-Z0-9]+$ можно представить как ^\w+$

Вместо пробела вы можете использовать \s. Обратите внимание, что \s выполняет поиск пробелов, а не только один пробельный символ.

Ответ 14

JQuery принимать только ЦИФРЫ, АЗБУКИ и СПЕЦИАЛЬНЫЕ ХАРАКТЕРИСТИКИ

<html>
<head>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>

<body>
Enter Only Numbers: 
<input type="text" id="onlynumbers">
<br><br>
Enter Only Alphabets: 
<input type="text" id="onlyalpha">
<br><br>
Enter other than Alphabets and numbers like special characters: 
<input type="text" id="speclchar">

<script>
    $('#onlynumbers').keypress(function(e) {
      var letters=/^[0-9]/g; //g means global
      if(!(e.key).match(letters)) e.preventDefault();
	});
    
    $('#onlyalpha').keypress(function(e) {
      var letters=/^[a-z]/gi; //i means ignorecase
      if(!(e.key).match(letters)) e.preventDefault();
	});
    
    $('#speclchar').keypress(function(e) {
      var letters=/^[0-9a-z]/gi; 
      if((e.key).match(letters)) e.preventDefault();
	});
    </script>
</body>
</html>