Ký tự từ regex JavaScript

Khi bạn lần đầu gặp Biểu thức chính quy, chúng có vẻ như là một chuỗi vô nghĩa ngẫu nhiên. Mặc dù trông có vẻ khó xử (với cú pháp hơi khó hiểu), nhưng chúng cũng cực kỳ hữu ích

Sự thật là hiểu đúng các biểu thức chính quy sẽ giúp bạn trở thành một lập trình viên hiệu quả hơn nhiều. Để hiểu đầy đủ về thế giới biểu thức chính quy, trước tiên bạn cần tìm hiểu các khái niệm cơ bản để sau này bạn có thể xây dựng

Vì vậy, không cần phải quảng cáo thêm, hãy bắt đầu. )

Mẹo. Sử dụng ứng dụng xây dựng Bit nhanh hơn với các thành phần. Nó giúp bạn chia sẻ và tái sử dụng các thành phần với nhóm của mình và sử dụng chúng để xây dựng các ứng dụng mới. Hãy thử một lần

Hợp tác và khám phá thành phần · Bit

Bit là nơi các nhà phát triển chia sẻ các thành phần và hợp tác để cùng nhau xây dựng phần mềm tuyệt vời. Khám phá các thành phần được chia sẻ…

chút. nhà phát triển

Phản ứng spinners với Bit. Chọn, Chơi, Cài đặt

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

Biểu thức chính quy là một cách để mô tả các mẫu trong dữ liệu chuỗi. Chúng tạo thành một ngôn ngữ nhỏ của riêng nó, là một phần của nhiều ngôn ngữ lập trình như Javascript, Perl, Python, Php và Java

Biểu thức chính quy cho phép bạn kiểm tra một chuỗi ký tự như địa chỉ email hoặc mật khẩu để tìm các mẫu, để xem liệu chúng có khớp với mẫu được xác định bởi biểu thức chính quy đó hay không và tạo ra thông tin có thể thực hiện được

Tạo một biểu thức chính quy

Có hai cách để tạo biểu thức chính quy trong Javascript. Nó có thể được tạo bằng hàm tạo RegExp hoặc bằng cách sử dụng dấu gạch chéo lên ( / ) để bao quanh mẫu

Trình tạo biểu thức chính quy

cú pháp.

var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
6

Ví dụ

var regexConst = new RegExp('abc');

Cụm từ thông dụng

cú pháp.

var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
7

Ví dụ

var regexLiteral = /abc/;
  • Ở đây các cờ là tùy chọn, tôi sẽ giải thích những điều này sau trong bài viết này

Cũng có thể có trường hợp bạn muốn tạo biểu thức chính quy một cách linh hoạt, trong trường hợp đó, biểu thức chính quy sẽ không hoạt động, vì vậy bạn phải sử dụng hàm tạo biểu thức chính quy

Cho dù bạn chọn phương thức nào, kết quả sẽ là một đối tượng biểu thức chính quy. Cả hai đối tượng regex sẽ có các phương thức và thuộc tính giống nhau được đính kèm với chúng

Vì dấu gạch chéo lên được sử dụng để bao quanh các mẫu trong ví dụ trên, bạn phải thoát khỏi dấu gạch chéo lên

var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
8 bằng dấu gạch chéo ngược
var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
9 nếu bạn muốn sử dụng nó như một phần của biểu thức chính quy

Phương thức biểu thức chính quy

Chủ yếu có hai phương pháp để kiểm tra các biểu thức chính quy

RegExp. nguyên mẫu. kiểm tra()

Phương pháp này được sử dụng để kiểm tra xem một trận đấu đã được tìm thấy hay chưa. Nó chấp nhận một chuỗi mà chúng tôi phải kiểm tra theo biểu thức chính quy và trả về ____60hoặc ____61tùy thuộc vào việc có tìm thấy kết quả khớp hay không

Ví dụ

var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true

RegExp. nguyên mẫu. giám đốc điều hành ()

Phương thức này trả về một mảng chứa tất cả các nhóm phù hợp. Nó chấp nhận một chuỗi mà chúng ta phải kiểm tra theo biểu thức chính quy

Ví dụ

var regex = /hello/;var str = 'hello world';var result = regex.exec(str);console.log(result);// returns [ 'hello', index: 0, input: 'hello world', groups: undefined ]// 'hello' -> is the matched pattern.
// index: -> Is where the regular expression starts.
// input: -> Is the actual string passed.

Chúng tôi sẽ sử dụng phương pháp

var regex = /hello/;var str = 'hello world';var result = regex.exec(str);console.log(result);// returns [ 'hello', index: 0, input: 'hello world', groups: undefined ]// 'hello' -> is the matched pattern.
// index: -> Is where the regular expression starts.
// input: -> Is the actual string passed.
2 trong bài viết này

Các mẫu Regex đơn giản

Đây là mẫu cơ bản nhất, chỉ đơn giản là khớp văn bản bằng chữ với chuỗi kiểm tra. Ví dụ

var regexConst = new RegExp('abc');
1Nhân vật đặc biệt

Cho đến bây giờ, chúng tôi đã tạo các mẫu biểu thức chính quy đơn giản. Bây giờ, hãy khai thác toàn bộ sức mạnh của biểu thức chính quy khi xử lý các trường hợp phức tạp hơn

Ví dụ: thay vì khớp một địa chỉ email cụ thể, giả sử chúng tôi muốn khớp một số địa chỉ email. Đó là nơi các nhân vật đặc biệt phát huy tác dụng. Có các ký hiệu và ký tự đặc biệt mà bạn phải ghi nhớ để hiểu đầy đủ các biểu thức chính quy

cờ

Cụm từ thông dụng có năm cờ hoặc công cụ sửa đổi tùy chọn. Hãy thảo luận về hai lá cờ quan trọng nhất

  • g — Tìm kiếm toàn cầu, không quay lại sau lần khớp đầu tiên
  • i — Tìm kiếm không phân biệt chữ hoa chữ thường

Bạn cũng có thể kết hợp các cờ trong một biểu thức chính quy. Lưu ý rằng thứ tự của họ không có bất kỳ ảnh hưởng nào đến kết quả

Hãy xem xét một số ví dụ mã

Biểu thức chính quy Literal — Cú pháp

var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
7

var regexConst = new RegExp('abc');
3

Trình tạo biểu thức chính quy — Cú pháp

var regex = /hello/;var str = 'hello world';var result = regex.exec(str);console.log(result);// returns [ 'hello', index: 0, input: 'hello world', groups: undefined ]// 'hello' -> is the matched pattern.
// index: -> Is where the regular expression starts.
// input: -> Is the actual string passed.
4

var regexConst = new RegExp('abc');
5

nhóm nhân vật

Bộ ký tự [xyz] — Bộ ký tự là một cách để khớp các ký tự khác nhau ở một vị trí, nó khớp với bất kỳ ký tự đơn nào trong chuỗi từ các ký tự có trong dấu ngoặc. Ví dụ

var regexConst = new RegExp('abc');
6

Lưu ý — Tất cả các ký tự đặc biệt ngoại trừ dấu mũ

var regex = /hello/;var str = 'hello world';var result = regex.exec(str);console.log(result);// returns [ 'hello', index: 0, input: 'hello world', groups: undefined ]// 'hello' -> is the matched pattern.
// index: -> Is where the regular expression starts.
// input: -> Is the actual string passed.
5 (Có ý nghĩa hoàn toàn khác bên trong bộ ký tự) sẽ mất ý nghĩa đặc biệt của chúng bên trong bộ ký tự

Bộ ký tự phủ định [^xyz] — Nó khớp với bất kỳ thứ gì không nằm trong dấu ngoặc. Ví dụ

var regexConst = new RegExp('abc');
8

Phạm vi [a-z] — Giả sử chúng ta muốn khớp tất cả các chữ cái trong bảng chữ cái ở một vị trí duy nhất, chúng ta có thể viết tất cả các chữ cái bên trong dấu ngoặc, nhưng có một cách dễ dàng hơn và đó là phạm vi. Ví dụ. [a-h] sẽ khớp với tất cả các chữ cái từ a đến h. Phạm vi cũng có thể là các chữ số như [0-9] hoặc chữ in hoa như [A-Z]

var regexConst = new RegExp('abc');
9

Siêu ký tự — Siêu ký tự là những ký tự có ý nghĩa đặc biệt. Có nhiều nhân vật meta nhưng tôi sẽ đề cập đến những nhân vật quan trọng nhất ở đây

  • \d — So khớp với bất kỳ ký tự chữ số nào (giống như
    var regex = /hello/;var str = 'hello world';var result = regex.exec(str);console.log(result);// returns [ 'hello', index: 0, input: 'hello world', groups: undefined ]// 'hello' -> is the matched pattern.
    // index: -> Is where the regular expression starts.
    // input: -> Is the actual string passed.
    6 )
  • \w — Ghép bất kỳ ký tự từ nào. Một ký tự từ là bất kỳ chữ cái, chữ số và dấu gạch dưới. (Giống như
    var regex = /hello/;var str = 'hello world';var result = regex.exec(str);console.log(result);// returns [ 'hello', index: 0, input: 'hello world', groups: undefined ]// 'hello' -> is the matched pattern.
    // index: -> Is where the regular expression starts.
    // input: -> Is the actual string passed.
    7 ) tôi. ký tự chữ và số
  • \s — Khớp một ký tự khoảng trắng (dấu cách, tab, v.v.)
  • \t — Chỉ khớp với một ký tự tab
  • \b — Tìm từ khớp ở đầu hoặc cuối của một từ. Còn được gọi là ranh giới từ
  • — (dấu chấm) So khớp với bất kỳ ký tự nào ngoại trừ xuống dòng
  • \D — So khớp bất kỳ ký tự không phải chữ số nào (giống như
    var regex = /hello/;var str = 'hello world';var result = regex.exec(str);console.log(result);// returns [ 'hello', index: 0, input: 'hello world', groups: undefined ]// 'hello' -> is the matched pattern.
    // index: -> Is where the regular expression starts.
    // input: -> Is the actual string passed.
    8)
  • \W — So khớp bất kỳ ký tự không phải từ nào (Giống như
    var regex = /hello/;var str = 'hello world';var result = regex.exec(str);console.log(result);// returns [ 'hello', index: 0, input: 'hello world', groups: undefined ]// 'hello' -> is the matched pattern.
    // index: -> Is where the regular expression starts.
    // input: -> Is the actual string passed.
    9 )
  • \S — So khớp ký tự không phải khoảng trắng

định lượng. — Lượng từ là các ký hiệu có ý nghĩa đặc biệt trong một biểu thức chính quy

  • + — So khớp với biểu thức đứng trước 1 hoặc nhiều lần
var regexLiteral = /abc/;
0
  • * —Khớp với biểu thức đứng trước 0 hoặc nhiều lần
var regexLiteral = /abc/;
1
  • ?
var regexLiteral = /abc/;
2
  • ^ — Khớp với phần đầu của chuỗi, biểu thức chính quy theo sau nó phải ở phần đầu của chuỗi kiểm tra. tôi. e dấu mũ (^) khớp với phần đầu của chuỗi
var regexLiteral = /abc/;
3
  • $ — Khớp với phần cuối của chuỗi, đó là biểu thức chính quy đứng trước nó phải ở cuối chuỗi kiểm tra. Ký hiệu đô la ($) khớp với phần cuối của chuỗi
var regexLiteral = /abc/;
4
  • {N} — So khớp chính xác N lần xuất hiện của biểu thức chính quy trước đó
var regexLiteral = /abc/;
5
  • {N,} — So khớp ít nhất N lần xuất hiện của biểu thức chính quy trước đó
var regexLiteral = /abc/;
6
  • {N,M} — So khớp ít nhất N lần xuất hiện và nhiều nhất M lần xuất hiện của biểu thức chính quy trước đó (trong đó M > N)
var regexLiteral = /abc/;
7

luân phiên X. Y — Phù hợp với X hoặc Y. Ví dụ

var regexLiteral = /abc/;
8

Lưu ý — Nếu bạn muốn sử dụng bất kỳ ký tự đặc biệt nào như một phần của biểu thức, chẳng hạn như bạn muốn khớp với chữ

var regexConst = new RegExp('abc');
10 hoặc
var regexConst = new RegExp('abc');
11, thì bạn phải thoát chúng bằng dấu gạch chéo ngược
var regexConst = new RegExp('abc');
12

Ví dụ

var regexLiteral = /abc/;
9

Nâng cao

(x) — So khớp với x và ghi nhớ kết quả khớp. Chúng được gọi là các nhóm chụp. Điều này cũng được sử dụng để tạo các biểu thức phụ trong một biểu thức chính quy. Ví dụ. -

var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
0

var regexConst = new RegExp('abc');
13 ghi nhớ và sử dụng kết quả khớp từ biểu thức con đầu tiên trong ngoặc đơn

(?. x) — Khớp x và không nhớ khớp. Chúng được gọi là các nhóm không bắt giữ. Ở đây

var regexConst = new RegExp('abc');
13 sẽ không hoạt động, nó sẽ khớp với
var regexConst = new RegExp('abc');
13 theo nghĩa đen

var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
1

x(?=y) — Chỉ khớp với x nếu theo sau x là y. Còn được gọi là cái nhìn tích cực về phía trước. Ví dụ

var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
2

Trong ví dụ trên, khớp sẽ chỉ xảy ra nếu theo sau

var regexConst = new RegExp('abc');
16 là
var regexConst = new RegExp('abc');
17

Thực hành Regex

Hãy thực hành một số khái niệm mà chúng ta đã học ở trên

  • Khớp với bất kỳ số có 10 chữ số nào
var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
3

Hãy phá vỡ nó và xem những gì đang xảy ra ở đó

  1. Nếu chúng tôi muốn thực thi rằng trận đấu phải trải rộng trên toàn bộ chuỗi, chúng tôi có thể thêm các bộ định lượng
    var regexConst = new RegExp('abc');
    18 và
    var regexConst = new RegExp('abc');
    19. Dấu mũ
    var regexConst = new RegExp('abc');
    18 khớp với phần đầu của chuỗi đầu vào, trong khi ký hiệu đô la
    var regexConst = new RegExp('abc');
    19 khớp với phần cuối. Vì vậy, nó sẽ không khớp nếu chuỗi chứa hơn 10 chữ số
  2. var regexConst = new RegExp('abc');
    32 khớp với bất kỳ ký tự chữ số nào
  3. var regexConst = new RegExp('abc');
    33 khớp với biểu thức trước đó, trong trường hợp này là
    var regexConst = new RegExp('abc');
    32 chính xác 10 lần. Vì vậy, nếu chuỗi kiểm tra chứa ít hơn hoặc nhiều hơn 10 chữ số, kết quả sẽ là sai
  • Khớp một ngày với định dạng sau
    var regexConst = new RegExp('abc');
    35or
    var regexConst = new RegExp('abc');
    36
var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
4

Hãy phá vỡ nó và xem những gì đang xảy ra ở đó

  1. Một lần nữa, chúng ta đã bọc toàn bộ biểu thức chính quy bên trong
    var regexConst = new RegExp('abc');
    18 và
    var regexConst = new RegExp('abc');
    19, để kết quả khớp kéo dài toàn bộ chuỗi
  2. var regexConst = new RegExp('abc');
    39 bắt đầu biểu thức con đầu tiên
  3. var regexConst = new RegExp('abc');
    50 khớp ít nhất 1 chữ số và nhiều nhất 2 chữ số
  4. var regexConst = new RegExp('abc');
    51 khớp với ký tự gạch nối theo nghĩa đen
  5. var regexConst = new RegExp('abc');
    52 kết thúc biểu thức con đầu tiên
  6. var regexConst = new RegExp('abc');
    53 khớp với biểu thức con đầu tiên chính xác hai lần
  7. var regexConst = new RegExp('abc');
    54 khớp chính xác hai chữ số
  8. var regexConst = new RegExp('abc');
    55 khớp chính xác hai chữ số. Nhưng nó là tùy chọn, vì vậy năm có 2 chữ số hoặc 4 chữ số
  • Phù hợp với mọi thứ trừ một dòng mới

Biểu thức phải khớp với bất kỳ chuỗi nào có định dạng như

var regexConst = new RegExp('abc');
56 trong đó mỗi biến
var regexConst = new RegExp('abc');
57 có thể là bất kỳ ký tự nào ngoại trừ dòng mới

var regex = /hello/;var str = 'hello world';var result = regex.test(str);console.log(result);// returns true
5

Hãy phá vỡ nó và xem những gì đang xảy ra ở đó

  1. Chúng tôi đã gói toàn bộ biểu thức chính quy bên trong
    var regexConst = new RegExp('abc');
    18 và
    var regexConst = new RegExp('abc');
    19, để khớp kéo dài toàn bộ chuỗi
  2. var regexConst = new RegExp('abc');
    39 bắt đầu biểu thức phụ đầu tiên
  3. var regexConst = new RegExp('abc');
    61 khớp với bất kỳ ký tự nào ngoại trừ dòng mới chính xác 3 lần
  4. var regexConst = new RegExp('abc');
    62 khớp với khoảng thời gian
    var regexConst = new RegExp('abc');
    11 theo nghĩa đen
  5. var regexConst = new RegExp('abc');
    52 kết thúc biểu thức phụ đầu tiên
  6. var regexConst = new RegExp('abc');
    65 khớp với biểu thức con đầu tiên chính xác 3 lần
  7. var regexConst = new RegExp('abc');
    61 khớp với bất kỳ ký tự nào ngoại trừ dòng mới chính xác 3 lần
Phần kết luận

Đôi khi, biểu thức chính quy có thể khá phức tạp, nhưng hiểu đúng về các khái niệm trên sẽ giúp bạn hiểu các mẫu biểu thức chính quy phức tạp hơn một cách dễ dàng. Bạn có thể tìm hiểu thêm về regex tại đây và thực hành tại đây

Vậy là xong, nếu bạn thấy bài viết này hữu ích, hãy nhấn nút 👏 (vài lần) và chia sẻ bài viết để mọi người dễ dàng tìm thấy. ) Bạn cũng có thể theo dõi tôi trên Medium và Twitter. )Tìm hiểu thêm

Làm cách nào để khớp một từ trong JavaScript regex?

Sử dụng phương thức test() . Phương thức này sẽ trả về một giá trị Boolean làm đầu ra.

Ký tự từ trong regex là gì?

Ký tự từ là ký tự a-z, A-Z, 0-9, bao gồm cả _ (dấu gạch dưới) .

Làm cách nào để khớp các ký tự đặc biệt trong biểu thức chính quy trong JavaScript?

1. 1 Tóm tắt cú pháp Regex .
Để khớp một ký tự có ý nghĩa đặc biệt trong biểu thức chính quy, bạn cần sử dụng tiền tố chuỗi thoát với dấu gạch chéo ngược ( \ ). .
Bạn cũng cần sử dụng regex \\ để khớp với "\" (dấu gạch chéo ngược)

Regex 0 * 1 * 0 * 1 * có nghĩa là gì?

Về cơ bản (0+1)* toán học bất kỳ dãy số nào và số nào . Vì vậy, trong ví dụ của bạn (0+1)*1(0+1)* phải khớp với bất kỳ chuỗi nào có 1. Nó sẽ không khớp với 000 , nhưng nó sẽ khớp với 010 , 1 , 111 , v.v. (0+1) nghĩa là 0 HOẶC 1. 1* có nghĩa là bất kỳ số nào.