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ản và thay 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ả |
---|---|
i | Thực hiện tìm kiếm không phân biệt hoa thường |
g | Thự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) |
m | Thự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ức | Mô 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ả |
---|---|
\d | Tìm một số |
\s | Tìm một kí tự khoảng trắng |
\b | Tì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 |
\uxxxx | Tì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ượng | Mô 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>
Tags:
Phản hồi từ học viên
5
(Dựa trên đánh giá ngày hôm nay)