¿Cómo saber si una cadena contiene un cierto carácter en JavaScript?
Tengo una página con un cuadro de texto donde se supone que un usuario debe ingresar un código de registro de 24 caracteres (letras y números, sin distinción entre mayúsculas y minúsculas). Usé maxlength para limitar al usuario a ingresar 24 caracteres.
Los códigos de registro generalmente se dan como grupos de caracteres separados por guiones, pero me gustaría que el usuario ingresara los códigos sin los guiones.
¿Cómo puedo escribir mi código JavaScript sin jQuery para comprobar que una cadena dada que el usuario introduce no contiene guiones o, mejor aún, solo contiene caracteres alfanuméricos?
Respuesta #1
Para encontrar "hola" en tu_cadena
if (your_string.indexOf('hello') > -1)
{
alert("hello found inside your_string");
}
Para el alfanumérico puedes usar una expresión regular:
http://www.regular-expressions.info/javascript.html
Expresión regular alfanumérica
Respuesta #2
Con la documentación de MDN de ES6 .includes()
"FooBar".includes("oo"); // true
"FooBar".includes("foo"); // false
"FooBar".includes("oo", 2); // false
E: No soportado por IE - en su lugar puedes usar el operador Tilde ~ (NOT a nivel de bits) con .indexOf()
~"FooBar".indexOf("oo"); // -2 -> true
~"FooBar".indexOf("foo"); // 0 -> false
~"FooBar".indexOf("oo", 2); // 0 -> false
Usado con un número, el operador Tilde efectivamente hace ~N => -(N+1). Úsalo con doble negación !! (NO lógico) para convertir los números en booleanos:
!!~"FooBar".indexOf("oo"); // true
!!~"FooBar".indexOf("foo"); // false
!!~"FooBar".indexOf("oo", 2); // false
Respuesta #3
Si tienes el texto en la variable foo:
if (! /^[a-zA-Z0-9]+$/.test(foo)) {
// Validation failed
}
Esto verificará y asegurará que el usuario haya ingresado al menos un carácter y que haya ingresado solo caracteres alfanuméricos.
Respuesta #4
ES6 contiene un método incorporado (includes) en el prototype de String, que se puede usar para comprobar si una cadena contiene otra cadena o no.
var str = 'To be, or not to be, that is the question.';
console.log(str.includes('To be')); El siguiente polyfill se puede usar para agregar este método en navegadores no compatibles. (Fuente)
if (!String.prototype.includes) {
String.prototype.includes = function(search, start) {
'use strict';
if (typeof start !== 'number') {
start = 0;
}
if (start + search.length > this.length) {
return false;
} else {
return this.indexOf(search, start) !== -1;
}
};
}Respuesta #5
Todos están pensando demasiado. Solo usa una expresión regular simple, es tu mejor amiga.
var string1 = "Hi Stack Overflow. I like to eat pizza."
var string2 = "Damn, I fail."
var regex = /(pizza)/g // Insert whatever phrase or character you want to find
string1.test(regex); // => true
string2.test(regex); // => false
¿Aprender expresiones regulares en 5 minutos?
