Проверьте, соответствует ли строка регулярному выражению в JS

Я хочу использовать JavaScript (может быть с jQuery), чтобы сделать некоторую проверку на стороне клиента, чтобы проверить, соответствует ли строка регулярному выражению:

^([a-z0-9]{5,})$

В идеале это будет выражение, которое возвращает true или false.

Я новичок JavaScript, делает match() делать то, что мне нужно? Кажется, он проверяет, соответствует ли часть строки регулярному выражению, а не всему.

6 ответов


использовать regex.test() если все, что вам нужно, это логический результат:

/^([a-z0-9]{5,})$/.test('abc1');   // false

/^([a-z0-9]{5,})$/.test('abc12');   // true

/^([a-z0-9]{5,})$/.test('abc123');   // true

...и вы можете удалить () из вашего регулярного выражения, так как вам не нужен захват.


использовать test() способ :

var term = "sample1";
var re = new RegExp("^([a-z0-9]{5,})$");
if (re.test(term)) {
    console.log("Valid");
} else {
    console.log("Invalid");
}

можно использовать match() а также:

if (str.match(/^([a-z0-9]{5,})$/)) {
    alert("match!");
}

но test() кажется, быстрее, как вы можете читать здесь.

важная разница между match() и test():

match() работает только со строками, но test() также работает с целыми числами.

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

использовать /youregexp/.test(yourString) Если вы только хотите знать, соответствует ли ваша строка регулярному выражению.


вот пример, который ищет определенные теги HTML, поэтому ясно, что /someregex/.test() возвращает логическое значение:

if(/(span|h[0-6]|li|a)/i.test("h3")) alert('true');

 let str = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
 let regexp = /[a-d]/gi;
 console.log(str.match(regexp));