Máy tínhLập trình

Javascript, ví dụ biểu hiện thường xuyên, kiểm tra Regular Expression

Trước khi sự ra đời của ngôn ngữ siêu văn bản, nhưng đúng hơn, cho đến khi nó trở nên rõ ràng rằng chúng ta không nên chỉ nhìn mà còn làm như vậy trong điều kiện nhất định, trong một địa điểm cụ thể, theo dữ liệu thay đổi trong số lượng đúng, việc tìm kiếm thông thường và thay thế chức năng tổ chức bất kỳ tinh vi lập trình viên. Tạo kiệt tác của nghệ thuật tìm kiếm bằng các ngôn ngữ lập trình, cơ sở dữ liệu và xuất sắc trong các hình thức điều kiện lấy mẫu, được trang bị với các thủ tục lưu trữ, gây nên và các phương tiện khác của mẫu cồng kềnh theo dõi thông tin quan hệ. Sự xuất hiện của các biểu thức chính quy với cách mạng đã không dẫn, nhưng đó là một cách hữu ích và thuận tiện để tìm và thay thế thông tin. Ví dụ, biểu thức thông thường Javascript email đơn giản hóa đáng kể đăng ký của du khách, không tải trang web gửi tin nhắn đến các địa chỉ không tồn tại.

Để nói rằng một biểu thức JavaScript thường xuyên là chuỗi produmannnyh tốt hơn nhiều indexOf () gọi trong khuôn khổ vòng thông thường và các nhà khai thác, không thể không nói rằng nó đã thực hiện các mã kịch bản là nhỏ gọn, nhưng ít hiểu người lãnh đạo, có thể là một cách rõ ràng.

Đối tượng RegExp = + template engine

biểu thức thông thường - là một mẫu động cơ +. Là người đầu tiên thực sự là một biểu thức chính quy - đối tượng JavaScript - các RegExp, thứ hai - đây mẫu biểu diễn, áp dụng nó vào dòng. Động cơ mà thực hiện biểu thức thông thường cho mỗi ngôn ngữ lập trình khác nhau. Và mặc dù không phải tất cả những khác biệt có ý nghĩa, nó nên được lưu ý, cũng như hãy chắc chắn kiểm tra cẩn thận các biểu hiện thường xuyên trước khi hoạt động của nó.

Một ký hiệu đặc biệt khi viết biểu thức thông thường là khá dễ sử dụng và khá hiệu quả, nhưng nó đòi hỏi chăm sóc, sự lanh tay và kiên nhẫn từ nhà phát triển. Bằng cách ký hiệu mẫu biểu thức chính quy cần phải làm quen với. Đây không phải là một mốt, đó là logic của một cơ chế để thực hiện «JavaScript biểu thức thông thường."

mẫu biểu thức chính quy

Cho phép hai lựa chọn:

var expOne = / abc * / i;

var expTwo = RegExp ( "abc *", "i");

Thông thường nó được sử dụng phương pháp đầu tiên. Trong trường hợp thứ hai, có dấu ngoặc kép, bởi vì để sử dụng ký tự '\', nó phải được thoát ra theo các quy tắc chung.

'Tôi - cờ chỉ ra "trường hợp nhạy cảm". Bạn cũng có thể sử dụng cờ g '- «toàn cầu tìm kiếm' và 'm' - một tìm kiếm nhiều đường.

Biểu tượng '/' để chỉ chung cho sử dụng một mẫu.

Sự khởi đầu và kết thúc của biểu thức chính quy

Các '^' định nghĩa các ký tự (s) mà từ đó để bắt đầu biểu hiện thường xuyên, và '$' xác định nhân vật (s) phải ở cuối. Bạn không nên thử nghiệm với họ bên trong một biểu thức, nơi họ có một ý nghĩa khác nhau.

Ví dụ,

var eRegExp = new RegExp (cRegExp, 'i');

var cRegRes = '';

var sTest = 'AbcZ';

if (eRegExp.test (sTest)) {

cRegRes + = '- Có';

} Else {

cRegRes + = '- Không';

}

var dTestLine = document.getElementById ( 'scTestLine');

dTestLine.innerHTML = 'Biểu /' + cRegExp + '/ cho hàng "' + sTest + '"' + cRegRes.

Yếu tố 'scTestLine' sẽ cho kết quả (cRegExp biến có một ý nghĩa tương ứng):

biểu hiện / ^ AbcZ $ / cho chuỗi "abcz" - Có

Nếu bạn loại bỏ các 'i' cờ, kết quả là:

biểu hiện / ^ AbcZ $ / cho chuỗi "abcz" - Không

Nội dung của một biểu thức chính quy

Một biểu thức chính quy là một chuỗi các ký tự, mà là đối tượng của việc tìm kiếm. Biểu hiện / qwerty / tìm kiếm entry là trình tự này:

biểu hiện / qwerty / cho chuỗi "qwerty" - Có

biểu hiện / qwerty / cho chuỗi "123qwerty456" - Có

Những thay đổi '^' là những biểu hiện:

biểu hiện / ^ qwerty / cho chuỗi "123qwerty456" - Không

biểu hiện / ^ qwerty / cho chuỗi "qwerty456" - Có

Tương tự như vậy, cho đến cuối biểu tượng dòng. biểu thức thông thường cho phép thống nhất: ví dụ: [az], [AZ], [0-9] - tất cả các chữ của bảng chữ cái trong trường hợp này hoặc con số. chữ Nga cũng có thể được sử dụng, nhưng nên chú ý đến mã hóa các chuỗi (được tìm thấy đang tìm kiếm) và các trang. Thông thường chữ Nga, cũng như ký tự đặc biệt, nó là một lợi thế để thiết lập mã.

Khi hình thành một biểu thức chính quy có thể chỉ định các tùy chọn cho sự hiện diện của những biểu tượng nhất định trong một địa điểm cụ thể, với số lượng của họ cho như sau: '*' = 0 lặp lại hoặc nhiều lần; '+' = 1 hoặc nhiều lần lặp đi lặp lại; {1} là như nhau, như '+'; {N} = lặp lại chính xác n lần; {N,} = n lặp lại lần trở lên; {N, m} = lặp lại của n để lần m.

Sử dụng dấu ngoặc đơn, bạn có thể chỉ định các ký tự đặt các tùy chọn. Nó trông như thế này. [ABCD] = [Quảng cáo] = mỗi bốn biểu tượng: 'a', 'b', 'c' hoặc 'd'. Bạn có thể chỉ định khác. Bất kỳ nhân vật khác với những quy định trong tập: [^ abcd] = bất kỳ nhân vật khác hơn là 'a', 'b', 'c' hoặc 'd'. '?' Nó chỉ ra rằng vào thời điểm này là biểu tượng không thể được. '' quy định cụ thể bất kỳ nhân vật khác hơn là cho thấy sự xuống dòng. '\ N' này, '\ r', '\ u2028' hoặc '\ u2029'. Khái niệm '\ s * | \ S *' = '[\ s | \ S] *' có nghĩa là việc tìm kiếm bất kỳ ký tự, bao gồm cả dòng mới.

phiên bản đơn giản của biểu thức chính quy

Khái niệm '[\ s | \ S] *' - không gian tìm kiếm, hoặc thiếu, đó là tất cả những gì trên đường dây. Trong trường hợp này, biểu tượng '\ s' chỉ ra một không gian, và '\ S' - ông vắng mặt.

Tương tự, bạn có thể sử dụng '\ d' để tìm kiếm các chữ số thập phân, và '\ D' tìm một nhân vật không phải số. Ký hiệu '\ f', 'r' và '\ n' tương ứng với các hình thức thức ăn, vận chuyển trở lại và dòng thức ăn chăn nuôi.

Các ký tự tab - '\ t', dọc - '\ v'. Việc chỉ định '\ w' tìm thấy bất kỳ ký tự Latin bảng chữ cái (chữ cái, chữ số, và dấu gạch dưới) = [A-Za-Z0-9_].

Việc chỉ định '\ W' là tương đương với [^ A-Za-Z0-9_]. Điều này có nghĩa bất kỳ nhân vật đó không phải là một bức thư của bảng chữ cái, số, hoặc '_'.

Tìm kiếm nhân vật '\ 0' = tìm kiếm NUL ký tự. Tìm kiếm '\ xHH' hoặc '\ Uhhhh' = Tìm kiếm mã ký tự hoặc HHHH HH tương ứng. H - thập lục phân số.

Đề nghị cách diễn đạt và mã hóa các biểu thức chính quy

Bất kỳ biểu hiện thường xuyên là rất quan trọng để kiểm tra một cách cẩn thận trên các phiên bản khác nhau của dòng.

Với kinh nghiệm của việc tạo ra một lỗi biểu thức chính quy sẽ nhỏ hơn, tuy nhiên nên luôn luôn được giữ trong tâm trí rằng kiến thức của mình về các quy tắc viết biểu thức thông thường không thể là sự thật, đặc biệt là khi "mùa thường xuyên" được chuyển từ một ngôn ngữ khác.

Lựa chọn giữa cổ điển (dấu hiệu cho thấy chính xác) và một phiên bản đơn giản của một biểu thức chính quy, nó là tốt hơn để thích đầu tiên. Sau khi tất cả, trong tác phẩm kinh điển luôn được ghi rõ rằng cả hai tìm kiếm. Nếu biểu thức chính quy hoặc chuỗi tìm kiếm có chữ tiếng Nga, nên dẫn đến một mã hóa đơn tất cả các dòng và các trang trên mà hoạt động tìm JavaScript mã thực hiện một biểu thức chính quy.

Khi có một xử lý nhân vật, bảng chữ cái phi Latin, nó làm cho tinh thần để xem xét một dấu hiệu của mã ký tự, không phải là nhân vật chính họ.

Khi thực hiện các thuật toán tìm kiếm trong JavaScript biểu thức chính quy phải được kiểm tra cẩn thận. Nó đặc biệt quan trọng để kiểm soát mã hóa ký tự.

Các dấu ngoặc trong biểu thức chính quy

Khung xác định các tùy chọn cho biểu tượng, mà cần phải có hoặc có thể không ở một nơi nào đó, và tròn - biến chuỗi. Nhưng đây chỉ là một nguyên tắc chung. Từ đó không có ngoại lệ, nhưng có một loạt các ứng dụng.

var cRegExp = "[az] * (png | jpg | gif).";

var eRegExp = new RegExp (cRegExp, 'i');

var cRegRes = '';

var sTest = 'picture.jpg';

if (eRegExp.test (sTest)) {

cRegRes + = '- Có';

} Else {

cRegRes + = '- Không';

}

kết quả:

/[az]*.(png|jpg|gif)/ biểu cho dòng "picture.jpg" - Có

biểu /^[ad][az]*.(png|jpg|gif)/ cho "picture.jpg" dòng - Không

/^[ad][az]*.(png|jpg|gif)/ biểu cho dòng "apicture.jpg" - Có

biểu /^[ad][az]*.(png|jpg|gif)/ cho "apicture.jg" dòng - Không

Cần lưu ý rằng tất cả, sau đó là một dấu hoa thị có thể có mặt bằng không lần. Điều này có nghĩa rằng "mùa bình thường" có thể làm việc theo những cách bất ngờ ít nhất.

Kiểm tra RegExp - kiểm tra email

Tại biểu Javascript thường xuyên thu được hai phương pháp, kiểm tra và exec, và có thể được sử dụng trong dòng đối tượng (String) trong phương pháp của họ (chức năng): tìm kiếm, chia tách, thay thế và phù hợp.

phương pháp thử nghiệm đã được chứng minh, nó cho phép bạn kiểm tra tính đúng đắn của biểu thức chính quy. Phương pháp Kết quả: đúng / sai.

Hãy xem xét các biểu thức thông thường JavaScript sau. Kiểm tra email từ số lượng "rất khó, nhưng chắc chắn":

var eRegExp = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s @ "] +) *) | (". + ")) @ ((\ [[0-9] {1,3} \ [0-9] {1,3} \ [0-9] {.. . 1,3} \ [0-9] {1,3}]) | (. ([a-zA-Z \ -0-9] + \) + [a-zA-Z] {2}) ) $ /;

một chuỗi var sTest ='SlavaChip@sci.by 'cho đúng, sau đó là chuỗi này là đúng email-address. Việc kiểm toán được thực hiện bởi eRegExp.test (sTest).

sử dụng thực tế: điều trị e-Mail

phương pháp Exec cung cấp các mảng đầu ra, gọi:

var aResult = eRegExp.exec (sTest);

cRegRes = '
' + aResult.length + '
';
for (var i = 0; i cRegRes + = aResult [i] + '
';
}

Nó cung cấp cho kết quả sau:

9
Slava.Chip@sci.by
Slava.Chip
Slava.Chip
.Chip
không xác định
sci.by
không xác định
sci.by
khoa học viễn tưởng.

Các phương pháp khác làm việc tương tự. Đó là khuyến cáo để kiểm tra xem chúng ra cho mình. Phát triển và sử dụng các biểu thức thông thường, đó là mong muốn làm việc trong thực tế, việc sao chép mã không luôn luôn khuyến khích ở đây.

Phổ biến "mùa bình thường"

JavaScript biểu thức chính quy dành cho thư điện tử không chỉ có rất nhiều lựa chọn dễ dàng hơn. Ví dụ, /^[\w-\.]+@[\w-]+\.[az]{2,3}$/i. Tuy nhiên, hiện thân này sẽ đưa vào tài khoản không phải tất cả hiện thân của bản ghi địa chỉ email.

Tất nhiên, bạn phải xem kinh nghiệm của các đồng nghiệp, để phân tích cách đề xuất của họ trước khi để thiết kế riêng của họ trên JavaScript biểu thức thông thường. Nhưng có một số khó khăn. Chúng ta không nên quên rằng một JavaScript biểu thức thông thường (ví dụ về khi sao chép) có thể lặp lại trong các nhân vật quan trọng: '\', '/' hoặc dấu ngoặc kép. Điều này sẽ dẫn đến lỗi, mà bạn có thể tìm kiếm lâu.

Điều quan trọng là phải đưa vào tài khoản thông thường "chiều kích của con người." Sau khi chính thức hoạt Javascript biểu thức chính quy cho điện thoại, có thể là người truy cập (người), nó được đưa ra trong nhiều cách khác nhau: 123-45-67, (29) 1234567, 80291234567 hoặc 375.291.234.567. Và đó là tất cả cùng một số. Đánh vần nhiều mẫu không phải lúc nào cũng có thể chấp nhận, và cố định cứng nhắc của các quy tắc để viết các số có thể tạo ra cảm giác khó chịu hoặc hạn chế không cần thiết. Option / ^ \ d [\ d \ (\) \ -] {4,14} \ d $ / i là phù hợp cho hầu hết các trường hợp, bạn kiểm tra số điện thoại của bạn.

Nếu bạn muốn thực hiện một biểu thức thông thường JavaScript, chỉ kiểm tra chữ số, thậm chí là một trường hợp đơn giản như vậy đòi hỏi làm rõ. Nó cần được xem xét một số nguyên hoặc ký hiệu khoa học phân đoạn, hoặc số bình thường, tích cực hay tiêu cực. Bạn cũng có thể đưa vào tài khoản sự tồn tại của ký hiệu tiền tệ, số lượng các chữ số sau dấu thập phân và các bộ phận của toàn bộ một phần của số trên bộ ba.

Biểu hiện / ^ \ d + $ / i kiểm tra chỉ số và biểu /^\d+\.\d+$/i cho phép sử dụng một điểm để chỉ ra phần thập phân của số.

Trong JavaScript kiểm tra biểu thức thông thường có thể được sử dụng để chỉ định dạng của dữ liệu đầu vào khó khăn, đó là điều quan trọng, đặc biệt khi nhập hồ sơ, dữ liệu hộ chiếu, và địa chỉ pháp lý t. D.

Hãy kiểm tra ngày - đơn giản đến phức tạp

Hãy xem xét một JavaScript biểu thức thông thường. Ví dụ cho đến nay, như đối với số số điện thoại đại diện cho sự lựa chọn giữa độ cứng và tính linh hoạt. Ngày sự kiện - một trong những dữ liệu cần thiết, mà thường phải được quản lý. Nhưng sửa chữa các đầu vào trong một định dạng cụ thể: "dd-mm-yyyy 'hoặc' d.m.gg 'thường dẫn đến sự bất mãn của khách hàng. Việc chuyển đổi từ lĩnh vực đầu vào của ngày-to-tháng, đầy HTML dạng cổ điển, không có thể xảy ra khi bạn nhập chỉ có một chữ số, và các đầu vào thứ hai có thể khó khăn. Ví dụ, trong lĩnh vực ngày nó được giới thiệu 3 và số tiếp theo 2 không thay thế đầu tiên, và được gán cho cô 32, trong đó, tất nhiên, sẽ gây ra sự bất tiện.

Hiệu quả và tiện lợi của biểu thức thông thường về cơ bản phụ thuộc vào việc xây dựng chung của một cuộc đối thoại với khách truy cập. Trong một trường hợp, để cho biết ngày đó là khuyến khích sử dụng một lĩnh vực đầu vào của các hình thức, trong trường hợp khác, nó là cần thiết để cung cấp cho các lĩnh vực khác nhau cho ngày, tháng và năm. Nhưng sau đó bất kỳ "chi phí của mã" thêm để kiểm tra năm nhuận, số tháng, số ngày trong đó.

Tìm kiếm và thay thế, bộ nhớ biểu thức chính quy

Javascript replace (biểu thức thông thường) bằng cách sử dụng phương pháp của đối tượng String, và cho phép chúng tôi để tìm thấy những giá trị và thay đổi nó ngay lập tức. Đây là hữu ích để sửa lỗi đánh máy, chỉnh sửa nội dung của các trường mẫu và để chuyển đổi dữ liệu từ một định dạng trình bày khác.

var cRegExp = / ([a-z] +) \ s ([a-z] +) \ s ([a-z] +) / i; // khi tìm kiếm ba 'biến'

var sTest = 'Điều này là tốt!';
var cRegRes = sTest.replace (cRegExp, "$ 2, $ 3, $ 1");

var dTestLine = document.getElementById ( 'scTestLine');

dTestLine.innerHTML = 'biểu hiện' + cRegExp + 'cho chuỗi "' + sTest + '" biến:' + cRegRes;

kết quả:

biểu hiện / ([az] +) \ s ([az] +) \ s ([az] +) / i cho dòng "bài viết này là tốt!" ra: bài viết là tốt, điều này!

Khi thực hiện mỗi cặp ngoặc lưu trữ kết quả trong 'biến' $ n, trong đó n - số lượng các cặp khung ($ 1, $ 2, ...). Không giống như truyền thống, ở đây đánh số biến là 1, không phải là 0.

khuyến nghị chung

biểu thức chính quy đơn giản hoá mã, nhưng thời gian để phát triển nó thường làm cho một sự khác biệt. Bạn có thể bắt đầu với những thiết kế đơn giản và sau đó thực hiện để kết hợp vào biểu thức phức tạp hơn. Bạn có thể sử dụng dịch vụ trực tuyến khác nhau để kiểm tra biểu thức thông thường hoặc các công cụ địa phương đặc biệt.

Lựa chọn tốt nhất sẽ tạo thư viện riêng của họ về biểu thức thông thường và các công cụ riêng của họ để kiểm tra sự phát triển mới. Đây là cách tốt nhất để củng cố kinh nghiệm và học hỏi làm thế nào để nhanh chóng xây dựng thiết kế đáng tin cậy và thoải mái.

Sử dụng sự lặp lại của các nhân vật và các chuỗi, có nghĩa là, ký tự đặc biệt '*', '+' và niềng răng, cho biết số lần lặp lại nên được hướng dẫn bởi các nguyên tắc của sự đơn giản và phương tiện. Điều quan trọng là nhận ra rằng một biểu thức chính quy để bắt đầu công việc của mình, và để có được kết quả là hoàn toàn vào sức mạnh của động cơ được sử dụng bởi trình duyệt. Không phải tất cả ngôn ngữ tương đương với JavaScript. Mỗi trình duyệt có thể mang họ sở thích cá nhân trong việc giải thích các biểu thức thông thường.

Khả năng tương thích không chỉ các trang và style sheets là, để biểu thức thông thường, nó cũng đã làm. Trang sử dụng JavaScript, có thể được coi là một hoạt động tốt chỉ khi nó đã làm việc thành công trên nhiều trình duyệt.

JavaScript, String và RegExp

Bởi công việc ngay tại mức khách hàng, có nghĩa là, trong trình duyệt của khách truy cập trong JavaScript, nó đòi hỏi kỹ năng cao của nhà phát triển. đủ lâu bạn có cơ hội để gỡ lỗi JavaScript mã trình duyệt của quỹ sở hữu hoặc với sự giúp đỡ của các phần mở rộng của bên thứ ba, biên tập mã, chương trình độc lập.

Tuy nhiên, không phải tất cả các trường hợp, trình gỡ lỗi có thể xử lý và cung cấp hỗ trợ tốt cho các nhà phát triển, một phát hiện lỗi nhanh chóng, phát hiện tắc nghẽn. Giờ khi máy tính đã được tập trung vào các tính toán, trong quá khứ xa xôi. Bây giờ, đặc biệt chú ý đến thông tin và dòng đối tượng đã đến đóng một vai trò quan trọng. Số dây thép, và bản chất thật của họ, họ biểu lộ chỉ vào đúng thời điểm và đúng nơi.

biểu thức thông thường củng cố khả năng dòng, nhưng đòi hỏi phải tự tôn trọng. Debug RegExp trong công việc của mình, thậm chí nếu nó có thể để mô phỏng, ý tưởng không phải là quá thú vị.

Tìm hiểu về cấu trúc và logic của đối tượng RegExp, có nghĩa là đối tượng String, cú pháp và ngữ nghĩa của JavaScript - một mã số an toàn và an toàn đúng, hoạt động ổn định của mỗi trang và các trang web như một toàn thể.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 vi.delachieve.com. Theme powered by WordPress.