Respuestas:
/^[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
Actualización (compatible con caracteres universales)
si necesita que esta expresión regular admita caracteres universales, puede encontrar una lista de caracteres unicode aquí.
por ejemplo: /^([a-zA-Z0-9\u0600-\u06FF\u0660-\u0669\u06F0-\u06F9 _.-]+)$/
esto apoyará persa.
[^\W_]
pero [a-z0-9]
/ i es una forma obvia.
Si desea devolver un resultado reemplazado, esto funcionaría:
var a = 'Test123*** TEST';
var b = a.replace(/[^a-z0-9]/gi,'');
console.log(b);
Esto devolvería:
Test123TEST
Tenga en cuenta que el gi es necesario porque significa global (no solo en la primera coincidencia) y no distingue entre mayúsculas y minúsculas, por lo que tengo az en lugar de a-zA-Z. Y el ^ dentro de los corchetes significa "cualquier cosa que no esté entre estos corchetes".
ADVERTENCIA: Alfanumérico es genial si eso es exactamente lo que quieres. Pero si está usando esto en un mercado internacional como el nombre de una persona o área geográfica, entonces debe tener en cuenta los caracteres Unicode, lo cual no será suficiente. Por ejemplo, si tiene un nombre como "Âlvarö", lo haría "lvar".
Usa la palabra clase de caracteres. Lo siguiente es equivalente a a ^[a-zA-Z0-9_]+$
:
^\w+$
Explicación:
Úselo /[^\w]|_/g
si no desea hacer coincidir el guión bajo.
/^([a-zA-Z0-9 _-]+)$/
la expresión regular anterior permite espacios en el lado de una cadena y restringe caracteres especiales. Solo permite az, AZ, 0-9, Espacio, subrayado y guión.
^\s*([0-9a-zA-Z]*)\s*$
o, si quieres un mínimo de un personaje:
^\s*([0-9a-zA-Z]+)\s*$
Los corchetes indican un conjunto de caracteres. ^ es el inicio de la entrada. $ es el final de la entrada (o nueva línea, según sus opciones). \ s es espacio en blanco.
El espacio en blanco antes y después es opcional.
Los paréntesis son el operador de agrupación que le permite extraer la información que desea.
EDITAR: eliminó mi uso erróneo del conjunto de caracteres \ w.
En lugar de buscar una cadena alfanumérica válida, puede lograr esto indirectamente al verificar la cadena para ver si hay caracteres no válidos. Para ello, verifique cualquier cosa que coincida con el complemento de la cadena alfanumérica válida.
/[^a-z\d]/i
Aquí hay un ejemplo:
var alphanumeric = "someStringHere";
var myRegEx = /[^a-z\d]/i;
var isValid = !(myRegEx.test(alphanumeric));
Observe el operador lógico no en isValid
, ya que estoy probando si la cadena es falsa, no si es válida.
Esto funcionará
^(?=.*[a-zA-Z])(?=.*[0-9])[a-zA-Z0-9]+$
Solo acepta caracteres alfanuméricos:
casos de prueba pasados:
dGgs1s23 - valid
12fUgdf - valid,
121232 - invalid,
abchfe - invalid,
abd()* - invalid,
42232^5$ - invalid
o
También puedes probar este. esta expresión satisfizo al menos un número y un carácter y ningún otro carácter especial
^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$
en angular puede probar como:
$scope.str = '12fUgdf';
var pattern = new RegExp('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$');
$scope.testResult = pattern.test($scope.str);
Referencia: expresión regular para alfanuméricos en Angularjs
Extienda el prototipo de cadena para usar en todo su proyecto
String.prototype.alphaNumeric = function() {
return this.replace(/[^a-z0-9]/gi,'');
}
Uso:
"I don't know what to say?".alphaNumeric();
//Idontknowwhattosay
Parece que muchos usuarios han notado que estas expresiones regulares fallarán casi con seguridad a menos que estemos trabajando estrictamente en inglés. Pero creo que hay un camino fácil que no sería tan limitado.
Los caracteres que coinciden en esas cadenas definitivamente no son de naturaleza alfabética.
let copy1 = originalString.toUpperCase();
let copy2 = originalString.toLowerCase();
for(let i=0; i<originalString.length; i++) {
let bIsAlphabetic = (copy1[i] != copy2[i]);
}
Opcionalmente, también puede detectar números simplemente buscando dígitos del 0 al 9.
Pruebe esto ... Reemplace su ID de campo con #nombre ... az (aaz), AZ (A a Z), 0-9 (0 a 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;
});
});
JAVASCRIPT acepta solo NÚMEROS, ALFABETOS y CARACTERES ESPECIALES
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>
Tengo una cadena similar al Samsung Galaxy A10s 6.2 pulgadas (2GB, 32GB ROM) Android 9.0, (13MP + 2MP) + 8MP Dual SIM 4000mAh 4G LTE Smartphone - Negro (BF19)
A continuación es lo que hice:
string.replace(/[^a-zA-Z0-9 ,._-]/g, '').split(',').join('-').split(' ').join('-').toLowerCase()
Aviso que permití ,._-
luego usar split()
y join()
reemplazar ,
a-
y el espacio para -
respectivamente.
Terminé obteniendo algo como esto:
samsung-galaxy-a10s-6.2-inch-2gb-32gb-rom-android-9.0-13mp-2mp-8mp-dual-sim-4000mah-4g-lte-smartphone-black-bf19-20
que es lo que quería.
Puede haber una mejor solución, pero esto es lo que encontré funcionando bien para mí.
Guarda esta constante
const letters = /^[a-zA-Z0-9]+$/
ahora, para verificar el uso de la parte .match ()
const string = 'Hey there...' // get string from a keyup listner
let id = ''
// iterate through each letters
for (var i = 0; i < string.length; i++) {
if (string[i].match(letters) ) {
id += string[i]
} else {
// In case you want to replace with something else
id += '-'
}
}
return id
Jquery acepta solo NÚMEROS, ALFABETOS y CARACTERES ESPECIALES
<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>
**JQUERY to accept only NUMBERS , ALPHABETS and SPECIAL CHARACTERS **
<!DOCTYPE html>
$('#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();
});
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js">
Ingrese solo números:
Ingrese solo alfabetos:
ingrese otros que no sean alfabetos y números como caracteres especiales:
</body>
</html>