javascript - Verificar se uma string corresponde a uma expressão regular em JS
Quero usar JavaScript (também posso usar jQuery) para verificar se uma string corresponde à regex ^([a-z0-9]{5,})$ e obter um resultado true ou false.
`match()` parece verificar se uma parte de uma string corresponde a uma regex, e não a string toda. Isso resolve o problema? Posso adaptá-lo para resolver o problema? Como?
Resposta #1
Use regex.test() se tudo o que você quer é um resultado booleano:
console.log(/^([a-z0-9]{5,})$/.test('abc1')); // false
console.log(/^([a-z0-9]{5,})$/.test('abc12')); // true
console.log(/^([a-z0-9]{5,})$/.test('abc123')); // true...e você pode remover o () do seu regexp já que não há necessidade de captura.
Resposta #2
Use o método test() :
var term = "sample1";
var re = new RegExp("^([a-z0-9]{5,})$");
if (re.test(term)) {
console.log("Valid");
} else {
console.log("Invalid");
}
Resposta #3
Você também pode usar match():
if (str.match(/^([a-z0-9]{5,})$/)) {
alert("match!");
}
Mas test() parece ser mais rápido como você pode ler aqui.
Diferença importante entre match() e test():
match() funciona apenas com strings, mas test() funciona também com inteiros.
12345.match(/^([a-z0-9]{5,})$/); // ERROR
/^([a-z0-9]{5,})$/.test(12345); // true
/^([a-z0-9]{5,})$/.test(null); // false
// Better watch out for undefined values
/^([a-z0-9]{5,})$/.test(undefined); // true
Resposta #4
Use /youregexp/.test(yourString) se você só quer saber se sua string corresponde à expressão regular.
Resposta #5
Aqui está um exemplo que procura certas tags HTML, para que fique claro que /someregex/.test() retorna um valor booleano:
if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');Lembre-se de indicar ^ para o início da string e $ para o fim, se você quiser testar a correspondência exata de toda a string.
Exemplo :
/[a-z]+/.test('aaa111'); // true
/^[a-z]+$/.test('aaa111'); // false
Resposta #6
let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
let regexp = /[a-d]/gi;
console.log(str.match(regexp));Resposta #7
const regExpStr = "^([a-z0-9]{5,})$"
const result = new RegExp(regExpStr, 'g').test("Your string") // here I have used 'g' which means global search
console.log(result) // true if it matched, false if it doesn't