By GokiSoft.Com| 11:54 19/05/2020|
Tài Liệu Javascript

JavaScript Regular Expressions - Biểu thức chính quy JavaScript

Một biểu thức chính quy là một chuỗi của các kí tự tổ chức thành một mẫu tìm kiếm.

Mẫu tìm kiếm có thể sử dụng cho tìm kiếm văn bản và hoạt động thay thế văn bản.



Biểu thức chính quy là gì?


Một biểu thức chính quy là một chuỗi các kí tự tổ chức thành một mẫu tìm.

Khi bạn tìm dữ liệu trong một văn bản, bạn có thể sử dụng mẫu tìm này để biểu diễn điều mà bạn đang tìm.

Một biểu thức chính quy có thể chỉ có một kí tự, hoặc một mẫu phức tạp hơn.

Biểu thức chính quy có thể sử dụng để thể hiện tất cả các loại hoạt động tìm kiếm văn bảnthay thế văn bản.

cú pháp

/pattern/modifiers;

ví dụ

var patt = /w3schools/i;


Giải thích ví dụ:

/w3schools/i là một biểu thức chính quy.

w3schools là một mẫu (được dùng trong một tìm kiếm).

i là một sử đổi (sửa đổi tìm kiếm không phân biệt hoa thường).



Sử dụng các phương thức chuỗi(Using String Methods)


Trong JavaScript, biểu thức chính quy thường dùng với hai phương thức chuỗi: 
search() và replace().

Phương thức search() dùng một biểu thức chính quy để tìm một kết quả trùng, và trả về vị trí trùng.

Phương thức replace() trả về một chuỗi sửa đổi tại nơi mà chuỗi mẫu thay thế.



Sử dụng search() với một chuỗi


Phương thức search() tìm một chuỗi với một giá trị cụ thể và trả về vị trí của nơi phù hợp:

ví dụ

Sử dụng một chuỗi để tìm "W3schools" trong một chuỗi:

var str = "Visit W3Schools!";
var n = str.search("W3Schools");
<!DOCTYPE html>
<html>
<body>

<h2>JavaScript String Methods</h2>

<p>Search a string for "W3Schools", and display the position of the match:</p>

<p id="demo"></p>

<script>
var str = "Visit W3Schools!"; 
var n = str.search("W3Schools");
document.getElementById("demo").innerHTML = n;
</script>

</body>
</html>



Sử dụng search() với một biểu thức chính quy


ví dụ

Sử dụng một biểu thức chính quy để thực hiện một tìm kiếm không phân biệt hoa thường cho "w3school" trong một chuỗi:

var str = "Visit W3Schools";
var n = str.search(/w3schools/i);

Kết quả n sẽ là:

6



Sử dụng replace() với một chuỗi


Phương thức replace() thay thế một giá trị cụ thể bằng một giá trị khác trong một chuỗi:

var str = "Visit Microsoft!";
var res = str.replace("Microsoft", "W3Schools");
<!DOCTYPE html>
<html>

<body>

<h2>JavaScript String Methods</h2>

<p>Replace "Microsoft" with "W3Schools" in the paragraph below:</p>

<button onclick="myFunction()">Try it</button>

<p id="demo">Please visit Microsoft!</p>

<script>
function myFunction() {
  var str = document.getElementById("demo").innerHTML; 
  var txt = str.replace("Microsoft","W3Schools");
  document.getElementById("demo").innerHTML = txt;
}
</script>

</body>
</html>



Sử dụng replace() với một biểu thức chính quy


ví dụ

Sử dụng một biểu thức chính quy phân biệt hoa thường để thay thế Microsoft bằng W3School trong một chuỗi:

var str = "Visit Microsoft!";
var res = str.replace(/microsoft/i, "W3Schools");
<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Replace "microsoft" with "W3Schools" in the paragraph below:</p>

<button onclick="myFunction()">Try it</button>

<p id="demo">Please visit Microsoft and Microsoft!</p>

<script>
function myFunction() {
  var str = document.getElementById("demo").innerHTML; 
  var txt = str.replace(/microsoft/i,"W3Schools");
  document.getElementById("demo").innerHTML = txt;
}
</script>

</body>
</html>


Kết quả sẽ là:

Visit W3Schools!



Bạn có để ý?


Tip: Các đối số biểu thức chính quy (thay vì các đối số chuỗi) có thể sử dụng trong các phương thức trên.

Các biểu thức chính quy có thể làm cho việc tìm kiếm của bạn mạnh mẽ hơn (ví dụ phân biệt hoa thường).



Công cụ sửa đổi các biểu thức chính quy(Regular Expression Modifiers)


Công cụ sửa đổi có thể dùng để thực hiện tìm kiếm không phân biệt hoa thường thêm bao quát hơn:

Modifier
Mô tả
iThực hiện tìm kiếm không phân biệt hoa thường
gThực hiện một tìm kiếm toàn bộ (tìm toàn bộ các kết quả thay vì dừng lại sau kết quả đầu)
mThực hiện tìm kiếm nhiều kết quả



Các mẫu biểu thức chính quy(Regular Expression Patterns)


Dấu ngoặc vuông được dùng để tìm một phạm vi của các kí tự:

Biểu thứcMô tả
[abc]Tìm bất kì ký tự nào giữa ngoặc vuông
[0-9]Tìm bất kì số nào giữa ngoặc vuông
(x|y)Tìm bất kì lựa chọn thay thế nào được ngăn cách bằng |


Siêu kí tự(Metacharacters) là các kí tự với những ý nghĩa đặt biệt:

Siêu kí tựMô tả
\dTìm một số
\sTìm một kí tự khoảng trắng
\bTìm một kết quả ở đầu của một từ như thế này: \bWORD, hoặc tại cuối của từ như thế này: WORD\b
\uxxxxTìm kí tự Unicode được xác định bởi số thập lục phân xxxx

Bộ định lượng(Quantifiers) xác định số lượng :

Định lượngMô tả
n+Khớp với bất kì chuỗi nào chứa ít nhất một n
n*Khớp với bất kì chuỗi nào chứa 0 hoặc nhiều lần xuất hiện của n
n?Khớp với bất kì chuỗi nào chưa 0 hoặc 1 lần xuất hiện của n



Sử dụng đối tượng RegExp(Using the RegExp Object)


Trong JavaScript, đối tượng RegExp là một đối tượng biểu thức chính quy với các phương thức và thuộc tính được xác định trước.



Sử dụng test()


Phương thức test() là một phương thức của biểu thức RegExp.

Nó tìm một chuỗi bằng một mẫu, và trả về true hoặc false, phụ thuộc vào kết quả.

Ví dụ tiếp theo tìm kiếm một chuỗi cho kí tự "e":

ví dụ

var patt = /e/;
patt.test("The best things in life are free!");
<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p>Search for an "e" in the next paragraph:</p>

<p id="p01">The best things in life are free!</p>

<p id="demo"></p>

<script>
text = document.getElementById("p01").innerHTML; 
document.getElementById("demo").innerHTML = /e/.test(text);
</script>

</body>
</html>


Khi có "e" trong chuỗi, đầu ra của code trên sẽ là:

true


Nếu bạn không phải bỏ biểu thức chính quy vào trong một biến trước. Hai dòng trên có thể được viết tắt lại thành 1:

/e/.test("The best things in life are free!");



Sử dụng exec()


Phương thức exec() là một phương thức của biểu thức RegExp.

Nó tìm một chuỗi bằng một mẫu xác định, và trả về văn bản tìm thấy như một đối tượng.

Nếu không có kết quả khớp, nó sẽ trả về một chuỗi rỗng(null).

Ví dụ tiếp theo tìm kiếm một chuỗi cho kí tự "e":

ví dụ 1

/e/.exec("The best things in life are free!");
<!DOCTYPE html>
<html>
<body>

<h2>JavaScript Regular Expressions</h2>

<p id="demo"></p>

<script>
var obj = /e/.exec("The best things in life are free!");
document.getElementById("demo").innerHTML =
"Found " + obj[0] + " in position " + obj.index + " in the text: " + obj.input;
</script>

</body>
</html>