Regex trong JavaScript là gì?

Regular Expression trong javascript vẫn chưa hết và nó có rất nhiều ứng dụng trong thực tế để xử lý chuỗi. Các em chịu khó thực tập nhé, tham khảo thêm tài liệu ở đây nè https://www.w3schools.com/jsref/jsref_obj_regexp.asp

Trong JavaScript, biểu thức chính quy (Regular Expression hay RegEx) là một đối tượng mô tả một chuỗi các ký tự được sử dụng để xác định một mẫu tìm kiếm. Ví dụ:

/^a...s$/

Đoạn mã trên xác định một mẫu Regular Expression. Nghĩa là: chuỗi năm chữ cái bất kỳ bắt đầu bằng

cost regularExp = /abc/

Code language: JavaScript (javascript)
1 và kết thúc bằng

cost regularExp = /abc/

Code language: JavaScript (javascript)
2.

Một mẫu được xác định bằng Regular Expression có thể được sử dụng để khớp (

cost regularExp = /abc/

Code language: JavaScript (javascript)
3) với một chuỗi.

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
4No match

cost regularExp = /abc/

Code language: JavaScript (javascript)
5Match

cost regularExp = /abc/

Code language: JavaScript (javascript)
6Match

cost regularExp = /abc/

Code language: JavaScript (javascript)
7No match

cost regularExp = /abc/

Code language: JavaScript (javascript)
8No match

Tạo một Regular Expression

Có hai cách để tạo một biểu thức chính quy trong JavaScript:

Sử dụng cụm từ thông dụng

Biểu thức chính quy bao gồm một mẫu nằm giữa dấu gạch chéo

cost regularExp = /abc/

Code language: JavaScript (javascript)
9.

cost regularExp = /abc/

Code language: JavaScript (javascript)

Trong đó,

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
0 là một biểu thức chính quy.

Sử dụng hàm khởi tạo RegExp()

Bạn cũng có thể tạo một biểu thức chính quy bằng cách gọi hàm khởi tạo

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
1.

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)

Ví dụ:

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)

Trong ví dụ trên,

cost regularExp = /abc/

Code language: JavaScript (javascript)
5 khớp với mẫu RegEx

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
3

Ở đây, phương thức

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
4 được sử dụng để kiểm tra xem chuỗi có khớp với mẫu hay không.

Còn một số phương thức khác có sẵn để sử dụng với JavaScript Regular Expression. Để tìm hiểu rõ hơn, hãy xem ở phía cuối bài viết nhé!


Xác định mẫu bằng Regular Expression

Để xác định biểu thức chính quy, siêu ký tự (metacharacter) được sử dụng. Trong ví dụ trên (

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
3),

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
6 và

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
7 là các siêu ký tự.


Siêu ký tự là các ký tự được RegEx diễn giải theo một cách đặc biệt. Đây là danh sách các siêu ký tự:

Siêu ký tự

[] . ^ $ * + ? {} () \ |


[] – Dấu ngoặc vuông

Dấu ngoặc vuông xác định một tập hợp các ký tự bạn muốn khớp.

Biểu thức:

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
8

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
11 match

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
02 matches

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
1No match

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
25 matches

Ở đây,

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
8 sẽ khớp nếu chuỗi có chứa bất kỳ ký tự a, b hoặc c.

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
4 khớp với

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
5.

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
6 khớp với

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
7.

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
8 khớp với

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
9.

Ngoài ra, có thể thêm dấu

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
6 sau dấu ngoặc vuông mở đầu để đảo ngược tập hợp ký tự.

[

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
6abc] có nghĩa là bất kỳ ký tự nào ngoại trừ a hoặc b hoặc c.

const regex1 = /^ab/;
const regex2 = new Regexp('/^ab/');
2 có nghĩa là bất kỳ ký tự nào không phải chữ số.


. – Dấu chấm

Dấu chấm khớp với bất kỳ ký tự đơn nào (ngoại trừ xuống dòng

const regex1 = /^ab/;
const regex2 = new Regexp('/^ab/');
3).

Biểu thức:

const regex1 = /^ab/;
const regex2 = new Regexp('/^ab/');
4

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
1No match

const regex = new RegExp(/^a...s$/); console.log(regex.test('alias')); // true

Code language: JavaScript (javascript)
01 match
const regex1 = /^ab/;
const regex2 = new Regexp('/^ab/');
71 match
const regex1 = /^ab/;
const regex2 = new Regexp('/^ab/');
82 matches (gồm 4 ký tự)

^ – Dấu mũ

Dấu mũ

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
6 được sử dụng để kiểm tra xem một chuỗi có bắt đầu bằng một ký tự nhất định hay không.

Biểu thức:

const string = 'Find me';
const pattern = /me/;

// search if the pattern is in string variable
const result1 = string.search(pattern);
console.log(result1); // 5

// replace the character with another character
const string1 = 'Find me';
string1.replace(pattern, 'found you'); // Find found you

// splitting strings into array elements
const regex1 = /[\s,]+/;
const result2 = 'Hello world! '.split(regex1);
console.log(result2); // ["I", "am", "learning", "JavaScript", "RegEx"]

// searching the phone number pattern
const regex2 = /(\d{3})\D(\d{3})-(\d{4})/g;
const result3 = regex2.exec('My phone number is: 555 123-4567.');
console.log(result3); // ["555 123-4567", "555", "123", "4567"]
0

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
11 match
const string = 'Find me';
const pattern = /me/;

// search if the pattern is in string variable
const result1 = string.search(pattern);
console.log(result1); // 5

// replace the character with another character
const string1 = 'Find me';
string1.replace(pattern, 'found you'); // Find found you

// splitting strings into array elements
const regex1 = /[\s,]+/;
const result2 = 'Hello world! '.split(regex1);
console.log(result2); // ["I", "am", "learning", "JavaScript", "RegEx"]

// searching the phone number pattern
const regex2 = /(\d{3})\D(\d{3})-(\d{4})/g;
const result3 = regex2.exec('My phone number is: 555 123-4567.');
console.log(result3); // ["555 123-4567", "555", "123", "4567"]
21 match
const string = 'Find me';
const pattern = /me/;

// search if the pattern is in string variable
const result1 = string.search(pattern);
console.log(result1); // 5

// replace the character with another character
const string1 = 'Find me';
string1.replace(pattern, 'found you'); // Find found you

// splitting strings into array elements
const regex1 = /[\s,]+/;
const result2 = 'Hello world! '.split(regex1);
console.log(result2); // ["I", "am", "learning", "JavaScript", "RegEx"]

// searching the phone number pattern
const regex2 = /(\d{3})\D(\d{3})-(\d{4})/g;
const result3 = regex2.exec('My phone number is: 555 123-4567.');
console.log(result3); // ["555 123-4567", "555", "123", "4567"]
3No match

Biểu thức:

const string = 'Find me';
const pattern = /me/;

// search if the pattern is in string variable
const result1 = string.search(pattern);
console.log(result1); // 5

// replace the character with another character
const string1 = 'Find me';
string1.replace(pattern, 'found you'); // Find found you

// splitting strings into array elements
const regex1 = /[\s,]+/;
const result2 = 'Hello world! '.split(regex1);
console.log(result2); // ["I", "am", "learning", "JavaScript", "RegEx"]

// searching the phone number pattern
const regex2 = /(\d{3})\D(\d{3})-(\d{4})/g;
const result3 = regex2.exec('My phone number is: 555 123-4567.');
console.log(result3); // ["555 123-4567", "555", "123", "4567"]
4

StringMatched?
const string = 'Find me';
const pattern = /me/;

// search if the pattern is in string variable
const result1 = string.search(pattern);
console.log(result1); // 5

// replace the character with another character
const string1 = 'Find me';
string1.replace(pattern, 'found you'); // Find found you

// splitting strings into array elements
const regex1 = /[\s,]+/;
const result2 = 'Hello world! '.split(regex1);
console.log(result2); // ["I", "am", "learning", "JavaScript", "RegEx"]

// searching the phone number pattern
const regex2 = /(\d{3})\D(\d{3})-(\d{4})/g;
const result3 = regex2.exec('My phone number is: 555 123-4567.');
console.log(result3); // ["555 123-4567", "555", "123", "4567"]
21 match
const string = 'Find me';
const pattern = /me/;

// search if the pattern is in string variable
const result1 = string.search(pattern);
console.log(result1); // 5

// replace the character with another character
const string1 = 'Find me';
string1.replace(pattern, 'found you'); // Find found you

// splitting strings into array elements
const regex1 = /[\s,]+/;
const result2 = 'Hello world! '.split(regex1);
console.log(result2); // ["I", "am", "learning", "JavaScript", "RegEx"]

// searching the phone number pattern
const regex2 = /(\d{3})\D(\d{3})-(\d{4})/g;
const result3 = regex2.exec('My phone number is: 555 123-4567.');
console.log(result3); // ["555 123-4567", "555", "123", "4567"]
6No match

$ – Dấu dollar

Dấu đô la

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
7 được sử dụng để kiểm tra xem một chuỗi có kết thúc bằng một ký tự nhất định hay không.

Biểu thức:

const string = 'Find me';
const pattern = /me/;

// search if the pattern is in string variable
const result1 = string.search(pattern);
console.log(result1); // 5

// replace the character with another character
const string1 = 'Find me';
string1.replace(pattern, 'found you'); // Find found you

// splitting strings into array elements
const regex1 = /[\s,]+/;
const result2 = 'Hello world! '.split(regex1);
console.log(result2); // ["I", "am", "learning", "JavaScript", "RegEx"]

// searching the phone number pattern
const regex2 = /(\d{3})\D(\d{3})-(\d{4})/g;
const result3 = regex2.exec('My phone number is: 555 123-4567.');
console.log(result3); // ["555 123-4567", "555", "123", "4567"]
8

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
11 match
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
01 match
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
1No match

* – Dấu sao

Dấu sao

const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
2 khớp với chuỗi có thành phần trước dấu
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
2 xuất hiện >= 0 lần (có thể không xuất hiện).

Biểu thức:

const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
4

StringMatched?
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
51 match
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
61 match
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
71 match
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
8No match (vì theo sau

cost regularExp = /abc/

Code language: JavaScript (javascript)
1 không phải
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
0)
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
11 match

+ – Dấu cộng

Dấu cộng

// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
2 khớp với chuỗi có thành phần trước dấu
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
2 xuất hiện >= 1 lần.

Biểu thức:

// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
4

StringMatched?
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
5No match (vì không chứa

cost regularExp = /abc/

Code language: JavaScript (javascript)
1)
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
61 match
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
71 match
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
8No match (vì theo sau

cost regularExp = /abc/

Code language: JavaScript (javascript)
1 không phải
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
0)
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
11 match

? – Dấu hỏi chấm

Dấu hỏi chấm

Enter a number XXX-XXX-XXXX: 2343223432 Enter number in XXX-XXX-XXXX format: 234-322-3432 The number is valid

3 khớp với chuỗi có thành phần trước dấu

Enter a number XXX-XXX-XXXX: 2343223432 Enter number in XXX-XXX-XXXX format: 234-322-3432 The number is valid

3
xuất hiện 0 hoặc 1 lần.

Biểu thức:

Enter a number XXX-XXX-XXXX: 2343223432 Enter number in XXX-XXX-XXXX format: 234-322-3432 The number is valid

5

StringMatched?
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
51 match
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
61 match
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
7No match (có nhiều hơn 1 ký tự
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
0)
const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world
8No match (vì theo sau

cost regularExp = /abc/

Code language: JavaScript (javascript)
1 không phải
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
0)
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
11 match

{} – Dấu ngoặc nhọn

Xem xét đoạn mã này:

// program to validate the email address

function validateEmail(email) {

    // regex pattern for email
    const re = /\[email protected]\S+\.\S+/g;

    // check if the email is valid
    let result = re.test(email);
    if (result) {
        console.log('The email is valid.');
    }
    else {
        let newEmail = prompt('Enter a valid email:');
        validateEmail(newEmail);
    }
}

// take input
let email = prompt('Enter an email: ');

validateEmail(email);
4. Điều này có nghĩa là có ít nhất
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
0 và nhiều nhất
// program to validate the email address

function validateEmail(email) {

    // regex pattern for email
    const re = /\[email protected]\S+\.\S+/g;

    // check if the email is valid
    let result = re.test(email);
    if (result) {
        console.log('The email is valid.');
    }
    else {
        let newEmail = prompt('Enter a valid email:');
        validateEmail(newEmail);
    }
}

// take input
let email = prompt('Enter an email: ');

validateEmail(email);
6 lần lặp lại thành phần đó.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
1{2, 3}

StringMatched?
// program to validate the email address

function validateEmail(email) {

    // regex pattern for email
    const re = /\[email protected]\S+\.\S+/g;

    // check if the email is valid
    let result = re.test(email);
    if (result) {
        console.log('The email is valid.');
    }
    else {
        let newEmail = prompt('Enter a valid email:');
        validateEmail(newEmail);
    }
}

// take input
let email = prompt('Enter an email: ');

validateEmail(email);
8No match
// program to validate the email address

function validateEmail(email) {

    // regex pattern for email
    const re = /\[email protected]\S+\.\S+/g;

    // check if the email is valid
    let result = re.test(email);
    if (result) {
        console.log('The email is valid.');
    }
    else {
        let newEmail = prompt('Enter a valid email:');
        validateEmail(newEmail);
    }
}

// take input
let email = prompt('Enter an email: ');

validateEmail(email);
91 match (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
00)

cost regularExp = /abc/

Code language: JavaScript (javascript)
012 matches (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
02 và

cost regularExp = /abc/

Code language: JavaScript (javascript)
03)

cost regularExp = /abc/

Code language: JavaScript (javascript)
042 matches (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
02 và

cost regularExp = /abc/

Code language: JavaScript (javascript)
06)

Hãy thử một ví dụ nữa. RegEx

cost regularExp = /abc/

Code language: JavaScript (javascript)
07 này khớp với ít nhất 2 chữ số nhưng không nhiều hơn 4 chữ số.

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
081 match (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
09)

cost regularExp = /abc/

Code language: JavaScript (javascript)
103 matches (

cost regularExp = /abc/

Code language: JavaScript (javascript)
11,

cost regularExp = /abc/

Code language: JavaScript (javascript)
12 và

cost regularExp = /abc/

Code language: JavaScript (javascript)
13)

cost regularExp = /abc/

Code language: JavaScript (javascript)
14
No match

| – Dấu sổ thẳng

Xem xét đoạn mã này:

cost regularExp = /abc/

Code language: JavaScript (javascript)
15Dấu sổ thẳng

cost regularExp = /abc/

Code language: JavaScript (javascript)
16 được sử dụng để tìm chuỗi hoặc là
// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);
0 hoặc là
// program to validate the email address

function validateEmail(email) {

    // regex pattern for email
    const re = /\[email protected]\S+\.\S+/g;

    // check if the email is valid
    let result = re.test(email);
    if (result) {
        console.log('The email is valid.');
    }
    else {
        let newEmail = prompt('Enter a valid email:');
        validateEmail(newEmail);
    }
}

// take input
let email = prompt('Enter an email: ');

validateEmail(email);
6.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
1|b

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
20No match

cost regularExp = /abc/

Code language: JavaScript (javascript)
211 match (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
22)

cost regularExp = /abc/

Code language: JavaScript (javascript)
233 matches (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
24)

() – Dấu ngoặc tròn

Dấu ngoặc tròn

cost regularExp = /abc/

Code language: JavaScript (javascript)
25 được sử dụng để nhóm các mẫu con. Ví dụ:

cost regularExp = /abc/

Code language: JavaScript (javascript)
26 khớp với bất kỳ chuỗi nào khớp với

cost regularExp = /abc/

Code language: JavaScript (javascript)
1 hoặc

cost regularExp = /abc/

Code language: JavaScript (javascript)
28 hoặc

cost regularExp = /abc/

Code language: JavaScript (javascript)
29 theo sau là

cost regularExp = /abc/

Code language: JavaScript (javascript)
30.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
26

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
32No match

cost regularExp = /abc/

Code language: JavaScript (javascript)
331 match (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
34)

cost regularExp = /abc/

Code language: JavaScript (javascript)
352 matches (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
36

cost regularExp = /abc/

Code language: JavaScript (javascript)
37)

\ – Dấu gạch chéo ngược

Dấu gạch chéo ngược được sử dụng để thể hiện tất cả các ký tự theo sau nó, bao gồm các siêu ký tự (metacharacter).

cost regularExp = /abc/

Code language: JavaScript (javascript)
38 khớp nếu một chuỗi chứa

cost regularExp = /abc/

Code language: JavaScript (javascript)
39 theo sau là

cost regularExp = /abc/

Code language: JavaScript (javascript)
1. Ở đây, $ không phải là RegEx.

Nếu bạn không chắc liệu một ký tự có đặc biệt hay không, bạn có thể đặt

cost regularExp = /abc/

Code language: JavaScript (javascript)
41 trước nó. Điều này đảm bảo rằng sẽ không bỏ sót trường hợp nào.


Special Sequences

Special Sequences là chuỗi đặc biệt và được bắt đầu bằng ký tự \, nó có ý nghĩa đặc biệt và thường trợ giúp cho việc mô tả Regular Expression được gọn gàng hơn.

\A

Bắt đầu chuỗi bằng ký tự chỉ định.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
42

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
43Match

cost regularExp = /abc/

Code language: JavaScript (javascript)
44No match

\b

Bắt đầu hoặc kết thúc của một từ bằng ký tự chỉ định.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
45

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
46Match

cost regularExp = /abc/

Code language: JavaScript (javascript)
47Match

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
48

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
47
No match

cost regularExp = /abc/

Code language: JavaScript (javascript)
50Match

cost regularExp = /abc/

Code language: JavaScript (javascript)
51Match

cost regularExp = /abc/

Code language: JavaScript (javascript)
52No match

\B

Ngược với

cost regularExp = /abc/

Code language: JavaScript (javascript)
53, khớp với các ký tự chỉ định nhưng không nằm ở đầu hoặc cuối từ.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
54

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
46No match

cost regularExp = /abc/

Code language: JavaScript (javascript)
47No match

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
57

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
1

cost regularExp = /abc/

Code language: JavaScript (javascript)
46Match

cost regularExp = /abc/

Code language: JavaScript (javascript)
60No match

cost regularExp = /abc/

Code language: JavaScript (javascript)
51No match

cost regularExp = /abc/

Code language: JavaScript (javascript)
52Match

\d

Chuỗi chứa ký tự là chữ số, giống với

cost regularExp = /abc/

Code language: JavaScript (javascript)
63.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
64

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
653 matches (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
66)

cost regularExp = /abc/

Code language: JavaScript (javascript)
67No match

\D

Chuỗi không chứa ký tự là số, giống với

const regex1 = /^ab/;
const regex2 = new Regexp('/^ab/');
2.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
69

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
703 matches (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
71)

cost regularExp = /abc/

Code language: JavaScript (javascript)
72No match

\s

Chuỗi chứa khoảng trắng, giống với

cost regularExp = /abc/

Code language: JavaScript (javascript)
73.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
74

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
751 match

cost regularExp = /abc/

Code language: JavaScript (javascript)
76No match

\S

Chuỗi không chứa khoảng trắng, giống với

cost regularExp = /abc/

Code language: JavaScript (javascript)
77.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
78

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
792 matches (at

cost regularExp = /abc/

Code language: JavaScript (javascript)
80

cost regularExp = /abc/

Code language: JavaScript (javascript)
81)No match

\w

Chuỗi chứa bất kỳ ký tự nào trong nhóm từ a tới Z, từ 0 tới 9 và dấu _ (underscore), giống với

cost regularExp = /abc/

Code language: JavaScript (javascript)
82.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
83

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
843 matches (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
85)

cost regularExp = /abc/

Code language: JavaScript (javascript)
86No match

\W

Ngược lại với 

cost regularExp = /abc/

Code language: JavaScript (javascript)
87.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
88

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
891 match (ở

cost regularExp = /abc/

Code language: JavaScript (javascript)
90)

cost regularExp = /abc/

Code language: JavaScript (javascript)
91No match

\Z

Kết thúc chuỗi bằng các ký tự được chỉ định.

Biểu thức:

cost regularExp = /abc/

Code language: JavaScript (javascript)
92

StringMatched?

cost regularExp = /abc/

Code language: JavaScript (javascript)
931 match

cost regularExp = /abc/

Code language: JavaScript (javascript)
94No match

cost regularExp = /abc/

Code language: JavaScript (javascript)
95No match

Mẹo: Để build và test các biểu thức chính quy, bạn có thể sử dụng các công cụ kiểm tra RegEx như regex101. Công cụ này không chỉ giúp bạn trong việc tạo biểu thức chính quy mà còn giúp bạn tìm hiểu chúng.


Phương thức của Regular Expression trong JavaScript

Như đã đề cập ở trên, bạn có thể sử dụng

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
1 hoặc cụm từ thông dụng để tạo RegEx trong JavaScript.

const regex1 = /^ab/;
const regex2 = new Regexp('/^ab/');

Trong JavaScript, bạn có thể sử dụng các biểu thức chính quy với các phương thức

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
1 là

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
4 và

cost regularExp = /abc/

Code language: JavaScript (javascript)
99.

Ngoài ra, còn có một số phương thức chuỗi cho phép bạn chuyển RegEx làm tham số của chúng như

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
00,

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
01,

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
02 và

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
03.

MethodDescription

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
04Tìm kiếm chuỗi phù hợp với mẫu so khớp, trả về một mảng chứa kết quả tìm kiếm

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
4Kiểm tra mẫu có khớp với chuỗi hay không, trả về true hoặc false

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
00Tìm kiếm chuỗi phù hợp với mẫu so khớp, trả về một mảng chứa kết quả tìm kiếm hoặc null nếu không tìm thấy

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
02Tìm kiếm chuỗi phù hợp với mẫu so khớp, trả về vị trí của chuỗi đó hoặc -1 nếu không tìm thấy

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
01Thay thế chuỗi bằng chuỗi khác phù hợp với mẫu tìm kiếm

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
03Ngắt chuỗi thành một mảng các chuỗi con

Ví dụ 1: Biểu thức chính quy

const string = 'Find me';
const pattern = /me/;

// search if the pattern is in string variable
const result1 = string.search(pattern);
console.log(result1); // 5

// replace the character with another character
const string1 = 'Find me';
string1.replace(pattern, 'found you'); // Find found you

// splitting strings into array elements
const regex1 = /[\s,]+/;
const result2 = 'Hello world! '.split(regex1);
console.log(result2); // ["I", "am", "learning", "JavaScript", "RegEx"]

// searching the phone number pattern
const regex2 = /(\d{3})\D(\d{3})-(\d{4})/g;
const result3 = regex2.exec('My phone number is: 555 123-4567.');
console.log(result3); // ["555 123-4567", "555", "123", "4567"]

Regular Expression Flags

Cờ (Flag) được sử dụng với các cụm từ thông dụng cho phép các tùy chọn khác nhau như tìm kiếm toàn cục, tìm kiếm không phân biệt chữ hoa chữ thường, v.v. Chúng có thể được sử dụng riêng biệt hoặc cùng nhau.

FlagsDescription

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
10so khớp toàn bộ chuỗi cần tìm
// program to validate the email address

function validateEmail(email) {

    // regex pattern for email
    const re = /\[email protected]\S+\.\S+/g;

    // check if the email is valid
    let result = re.test(email);
    if (result) {
        console.log('The email is valid.');
    }
    else {
        let newEmail = prompt('Enter a valid email:');
        validateEmail(newEmail);
    }
}

// take input
let email = prompt('Enter an email: ');

validateEmail(email);
6so khớp luôn cả các dữ liệu xuống dòng

const reguarExp = new RegExp('abc)

Code language: JavaScript (javascript)
12so khớp không quan tâm đến chữ hoa chữ thường

Ví dụ 2: Chính sửa Regular Expression

const string = 'Hello hello hello';

// performing a replacement
const result1 = string.replace(/hello/, 'world');
console.log(result1); // Hello world hello

// performing global replacement
const result2 = string.replace(/hello/g, 'world');
console.log(result2); // Hello world world

// performing case-insensitive replacement
const result3 = string.replace(/hello/i, 'world');
console.log(result3); // world hello hello

// performing global case-insensitive replacement
const result4 = string.replace(/hello/gi, 'world');
console.log(result4); // world world world

Ví dụ 3: Xác thực số điện thoại

// program to validate the phone number

function validatePhone(num) {

    // regex pattern for phone number
    const re = /^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/g;

    // check if the phone number is valid
    let result = num.match(re);
    if (result) {
        console.log('The number is valid.');
    }
    else {
        let num = prompt('Enter number in XXX-XXX-XXXX format:');
        validatePhone(num);
    }
}

// take input
let number = prompt('Enter a number XXX-XXX-XXXX');

validatePhone(number);

Kết quả:

Enter a number XXX-XXX-XXXX: 2343223432 Enter number in XXX-XXX-XXXX format: 234-322-3432 The number is valid


Ví dụ 4: Xác thực địa chỉ email

// program to validate the email address

function validateEmail(email) {

    // regex pattern for email
    const re = /\[email protected]\S+\.\S+/g;

    // check if the email is valid
    let result = re.test(email);
    if (result) {
        console.log('The email is valid.');
    }
    else {
        let newEmail = prompt('Enter a valid email:');
        validateEmail(newEmail);
    }
}

// take input
let email = prompt('Enter an email: ');

validateEmail(email);

Kết quả:

cost regularExp = /abc/

Code language: JavaScript (javascript)
0

Kết luận

Regular Expression thật sự rất mạnh mẽ và nó sẽ giúp các bạn xử lý được rất nhiều bài toán khó, phức tạp nếu áp dụng cách thông thường. Nhưng nó cũng thực sự khá rối rắm với nhưng người chưa tìm hiểu kỹ về nó. Hy vọng các bạn sẽ tìm được niềm vui khi sử dụng Regular Expression với JavaScript.