Pesquisa de site

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

Artigos relacionados