• About
  • Advertise
  • Privacy & Policy
  • Contact
DevZone
  • Home
  • News
  • Dev
    • All
    • Algorithm
    • Architecture
    • Database
    • Design
    • DevOps
    • IoT
    • Network
    • Test
    • Web
    Phương thức xử lý mảng trong javascript

    Phương thức xử lý mảng trong javascript

    Bảo vệ content, chống copy nội dung web!

    Bảo vệ content, chống copy nội dung web!

    Lưu ý mệnh đề NOT IN trong SQL

    Lưu ý mệnh đề NOT IN trong SQL

    SOLID Principles: Dependency Inversion Principle

    SOLID Principles: Dependency Inversion Principle

    Solid Principles: Interface Segregation Principle

    Solid Principles: Interface Segregation Principle

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    IPC – Đằng sau sự thành công của Chromium

    IPC – Đằng sau sự thành công của Chromium

    Dựng layout website với CSS Grid Layout

    Dựng layout website với CSS Grid Layout

    Golang cơ bản (p1)

    Golang cơ bản (p1)

    Trending Tags

    • Idea
    • Lifestyle
    No Result
    View All Result
    • Home
    • News
    • Dev
      • All
      • Algorithm
      • Architecture
      • Database
      • Design
      • DevOps
      • IoT
      • Network
      • Test
      • Web
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      Bảo vệ content, chống copy nội dung web!

      Bảo vệ content, chống copy nội dung web!

      Lưu ý mệnh đề NOT IN trong SQL

      Lưu ý mệnh đề NOT IN trong SQL

      SOLID Principles: Dependency Inversion Principle

      SOLID Principles: Dependency Inversion Principle

      Solid Principles: Interface Segregation Principle

      Solid Principles: Interface Segregation Principle

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      IPC – Đằng sau sự thành công của Chromium

      IPC – Đằng sau sự thành công của Chromium

      Dựng layout website với CSS Grid Layout

      Dựng layout website với CSS Grid Layout

      Golang cơ bản (p1)

      Golang cơ bản (p1)

      Trending Tags

      • Idea
      • Lifestyle
      No Result
      View All Result
      DEVZONE
      No Result
      View All Result
      Home Dev Web

      Regex và một số biểu thức nên biết

      DiemND by DiemND
      December 28, 2019
      in Web
      0
      Regex và một số biểu thức nên biết

      Khái niệm

      Biểu thức chính quy (tiếng anh: regular expression, viết tắt là regexp, regex hay regxp) là một chuỗi miêu tả một bộ các chuỗi khác, theo những quy tắc cú pháp nhất định. Biểu thức chính quy thường được dùng trong các trình biên tập cơ bản và các tiện ích tìm kiếm và xử lý văn bản dựa trên các mẫu được quy định. Nhiều ngôn ngữ lập trình cũng hỗ trợ biểu thức chính quy trong việc xử lý chuỗi

      Nguyên tắc hoạt động của biểu thức Regex là so khớp dựa vào khuôn mẫu, khuôn mẫu được xây dựng từ các quy tắc căn bản của biểu thức Regex.

      Dưới đây là tóm tắt một số kiến thức cơ bản về biểu thức chính quy Regex để các bạn tiện theo dõi:

      • /abc/ : chuỗi các kí tự abc
      • /[abc]: bất kỳ kí tự nào thuộc tập hợp a, b, c
      • /[^abc]: bất kỳ kí tự nào không thuộc tập a, b, c
      • /[0-9]/: bất kỳ kí tự nào thuộc đoạn từ 0 đến 9
      • /x+/: thành phần x xuất hiện >= 1 lần
      • /x*/: thành phần x xuất hiện >= 0 lần (có thể không xuất hiện)
      • /x?/: thành phần x xuất hiện 0 hoặc 1 lần
      • /x{2, 4}/: thành phần x xuất hiện từ 2 đến 4 lần
      • /(abc)/: cụm abc
      • /a|b|c/: bất kì pattern nào trong 3 loại a, b, c
      • /\d/: chữ số từ 0 đến 9
      • /\w/: chữ cái
      • /\s/: kí tự trắng (dấu cách, tab, dòng mới,…)
      • /./ : bất kỳ kí tự nào trừ dòng mới
      • /\b/: ranh giới từ
      • /^/: bắt đầu string
      • /$/: kết thúc string

      Một số biểu thức nên biết

      Dưới đây là một số biểu thức hay ho mà mình chọn lọc và test bằng javascript

      Kiểm tra string chỉ chứa chữ cái (a-zA-Z)

      const isAlpha = /^[a-zA-Z]+$/;
      console.log(isAlpha.test("javascript")); // true
      console.log(isAlpha.test("JavaScript")); // true
      console.log(isAlpha.test("2019")); // false
      console.log(isAlpha.test("javascript2019")); // false
      console.log(isAlpha.test("J@vascr!pt")); // false
      console.log(isAlpha.test("java script")); // false
      console.log(isAlpha.test("java-script")); // false
      console.log(isAlpha.test("")); // false
      

      Kiểm tra string chỉ chứa số (0-9)

      const isNumeric = /^\d+$/;
      console.log(isNumeric.test("2019")); // true
      console.log(isNumeric.test("javascript")); // false
      console.log(isNumeric.test("JavaScript")); // false
      console.log(isNumeric.test("20 19")); // false
      console.log(isNumeric.test("javascript2019")); // false
      console.log(isNumeric.test("J@vascr!pt")); // false
      console.log(isNumeric.test("java script")); // false
      console.log(isNumeric.test("java-script")); // false
      console.log(isNumeric.test("")); // false
      

      Kiểm tra string chỉ chứa chữ cái (a-zA-Z) và số (0-9)

      const isNumeric = /^[a-zA-Z0-9]+$/;
      console.log(isNumeric.test("javascript")); // true
      console.log(isNumeric.test("JavaScript")); // true
      console.log(isNumeric.test("2019")); // true
      console.log(isNumeric.test("javascript2019")); // true
      console.log(isNumeric.test("20 19")); // false
      console.log(isNumeric.test("J@vascr!pt")); // false
      console.log(isNumeric.test("java script")); // false
      console.log(isNumeric.test("java-script")); // false
      console.log(isNumeric.test("")); // false
      

      Kiểm tra string là base64

      const isBase64 = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/;
      console.log(isBase64.test("SomeStringObviouslyNotBase64Encoded...")); // false
      console.log(isBase64.test("U29tZVN0cmluZ09idmlvdXNseU5vdEJhc2U2NEVuY29kZWQ=")); // true
      

      Kiểm tra string là số thập phân

      const isDecimal = /^[+-]?((\d+(\.\d*)?)|(\.\d+))$/;
      console.log(isDecimal.test("123")); // true
      console.log(isDecimal.test("23.45")); // true
      console.log(isDecimal.test("-123")); // true
      console.log(isDecimal.test("-273.15")); // true
      console.log(isDecimal.test("+516")); // true
      console.log(isDecimal.test("+9.8")); // true
      console.log(isDecimal.test(".")); // false
      console.log(isDecimal.test("-.")); // false
      console.log(isDecimal.test("+.")); // false
      console.log(isDecimal.test("*12.34")); // false
      console.log(isDecimal.test("abc")); // false
      console.log(isDecimal.test("")); // false
      

      Kiểm tra string là mã màu dạng hexa

      const isHexColor = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/;
      console.log(isHexColor.test("#1f1f1F")); // true
      console.log(isHexColor.test("#AFAFAF")); // true
      console.log(isHexColor.test("#1AFFa1")); // true
      console.log(isHexColor.test("#222fff")); // true
      console.log(isHexColor.test("#F00")); // true
      console.log(isHexColor.test("123456")); // false
      console.log(isHexColor.test("#afafah")); // false
      console.log(isHexColor.test("#123abce")); // false
      console.log(isHexColor.test("aFaE3f")); // false
      console.log(isHexColor.test("F00")); // false
      console.log(isHexColor.test("#afaf")); // false
      console.log(isHexColor.test("#F0h")); // false
      console.log(isHexColor.test("#1234567")); // false
      

      Kiểm tra string là mã màu RGB

      const isRGBColor = /^rgb\(((\s*(\d|[1-9]\d|1\d\d|2[0-4][0-9]|25[0-5])\s*),){2}(\s*(\d|[1-9]\d|1\d\d|2[0-4][0-9]|25[0-5])\s*)\)$/;
      console.log(isRGBColor.test("rgb(0, 0, 0)")); // true
      console.log(isRGBColor.test("rgb(0, 15, 120)")); // true
      console.log(isRGBColor.test("rgb(10, 1, 230)")); // true
      console.log(isRGBColor.test("rgb(255, 15, 9)")); // true
      console.log(isRGBColor.test("rgb(255, 255, 255)")); // true
      console.log(isRGBColor.test("rgb(255,15,120)")); // true
      console.log(isRGBColor.test("rgb( 255, 15,  120 )")); // true
      console.log(isRGBColor.test("rgc(255,15,120)")); // false
      console.log(isRGBColor.test("rgb[255,15,120]")); // false
      console.log(isRGBColor.test("rgb(255-15-120)")); // false
      console.log(isRGBColor.test("rgb( 255,5,120,)")); // false
      console.log(isRGBColor.test("rgb(355, 5, 120)")); // false
      console.log(isRGBColor.test("rgb(155, 405, 120)")); // false
      console.log(isRGBColor.test("rgb(5, 5, 520)")); // false
      console.log(isRGBColor.test("rgb(255,,120)")); // false
      console.log(isRGBColor.test("rgb(03, 15, 120)")); // false
      

      Kiểm tra string là mã màu RGBA

      const isRGBAColor = /^rgba\(((\s*(\d|[1-9]\d|1\d\d|2[0-4][0-9]|25[0-5])\s*),){3}(\s*(1(\.0+)?|0?\.\d+)\s*)\)$/;
      console.log(isRGBAColor.test("rgba(0, 0, 0, 1)")); // true
      console.log(isRGBAColor.test("rgba(0, 15, 120, 1.0)")); // true
      console.log(isRGBAColor.test("rgba(10, 1, 230, 1.00)")); // true
      console.log(isRGBAColor.test("rgba(255, 15, 9, 0.3)")); // true
      console.log(isRGBAColor.test("rgba(255, 255, 255, .555)")); // true
      console.log(isRGBAColor.test("rgba(255,15,120,0.4)")); // true
      console.log(isRGBAColor.test("rgba( 255, 15,  120 , 1.0)")); // true
      console.log(isRGBAColor.test("rgbd(255,15,120,1.0)")); // false
      console.log(isRGBAColor.test("rgba[255,15,120,1.0]")); // false
      console.log(isRGBAColor.test("rgba(255-15-120-1.0)")); // false
      console.log(isRGBAColor.test("rgba( 255,5,120,1,)")); // false
      console.log(isRGBAColor.test("rgba(155, 5, 120,2)")); // false
      console.log(isRGBAColor.test("rgba(155, 405, 120, 0.3)")); // false
      console.log(isRGBAColor.test("rgba(5, 5, 520, 0.4)")); // false
      console.log(isRGBAColor.test("rgba(255,,120, 1)")); // false
      console.log(isRGBAColor.test("rgba(03, 15, 120, 0.5)")); // false
      

      Kiểm tra string là email

      const isEmail = /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i;
      console.log(isEmail.test("123")); // false
      console.log(isEmail.test("email")); // false
      console.log(isEmail.test("lam@hotmail")); // false
      console.log(isEmail.test("@lpv@yahoo")); // false
      console.log(isEmail.test("+admin@test")); // false
      console.log(isEmail.test("editer@dm.vn_")); // false
      console.log(isEmail.test("lampv@gmail.com")); // true
      console.log(isEmail.test("-lamp@mail.co")); // true
      console.log(isEmail.test("LM.pv666@domain.vn")); // true
      console.log(isEmail.test("124la@test.com")); // true
      console.log(isEmail.test("+Admin@test.io")); // true
      console.log(isEmail.test("user@test.com.vn")); // true
      console.log(isEmail.test("lam-pv@js.vn")); // true
      

      Kiểm tra string là IPv4

      const isIPv4 = /^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$/;
      console.log(isIPv4.test("255.255.255.255")); // true
      console.log(isIPv4.test("0.0.0.0")); // true
      console.log(isIPv4.test("0.12.34.56")); // true
      console.log(isIPv4.test("255.0.0.255")); // true
      console.log(isIPv4.test("12.34.56.78")); // true
      console.log(isIPv4.test("02.34.56.78")); // false
      console.log(isIPv4.test("12.04.56.78")); // false
      console.log(isIPv4.test("12.34.06.78")); // false
      console.log(isIPv4.test("12.34.56.08")); // false
      console.log(isIPv4.test("12.34.56.055")); // false
      console.log(isIPv4.test("12..34.56.0")); // false
      console.log(isIPv4.test("ab.ab.ab.ab")); // false
      console.log(isIPv4.test(".255.255.23")); // false
      console.log(isIPv4.test("11.11.0.256")); // false
      console.log(isIPv4.test("1000.0.0.00")); // false
      console.log(isIPv4.test("255.255.255.00")); // false
      console.log(isIPv4.test("12.34.56.78.")); // false
      console.log(isIPv4.test("111111111111")); // false
      

      Check string là địa chỉ MAC

      const isMACAddress = /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/;
      console.log(isMACAddress.test("3D:F2:C9:A6:B3:4F")); // true
      console.log(isMACAddress.test("3d:f2:c9:a6:b3:4f")); // true
      console.log(isMACAddress.test("3D-F2-C9-A6-B3-4F")); // true
      console.log(isMACAddress.test("3d-f2-c9-a6-b3-4F")); // true
      console.log(isMACAddress.test("d3-2f-9c-6a-3b-f4")); // true
      console.log(isMACAddress.test("00-00-00-00-00-00")); // true
      console.log(isMACAddress.test("3D:F2-C9:A6-B3:4F")); // true
      console.log(isMACAddress.test("99:99:99:99:99:99")); // true
      console.log(isMACAddress.test("0:0:0:0:0:0")); // false
      console.log(isMACAddress.test("d33-2ff-9c4-6aa-3b4-b56")); // false
      console.log(isMACAddress.test("qw:er:ty:ui:op:as")); // false
      console.log(isMACAddress.test("3A.FC.C0.B6.A8.45")); // false
      console.log(isMACAddress.test("3A-FC-C0-B6-A9")); // false
      console.log(isMACAddress.test("d3-2f-9c-6a-3b-f4-b5")); // false
      

      Kiểm tra string là MD5

      const isMD5Format = /^[a-f0-9]{32}$/;
      console.log(isMD5Format.test("00236a2ae558018ed13b5222ef1bd987")); // true
      console.log(isMD5Format.test("00236a2ae558018ed13b5222ef1bd9878")); // false
      console.log(isMD5Format.test("00236a2ae558018ed13b5222ef1bd98")); // false
      console.log(isMD5Format.test("00236a2ae558018ed13b5222ef1bd9.8")); // false
      console.log(isMD5Format.test("00236a2ae558018ed13b5222ef1bdxyz")); // false
      

      Kiểm tra string là số điện thoại Việt Nam

      const isVNPhoneMobile = /^(0|\+84)(\s|\.)?((3[2-9])|(5[689])|(7[06-9])|(8[1-689])|(9[0-46-9]))(\d)(\s|\.)?(\d{3})(\s|\.)?(\d{3})$/;
      
      console.log(isVNPhoneMobile.test("0866888999")); // true - Viettel
      console.log(isVNPhoneMobile.test("0.866.888.999")); // true
      console.log(isVNPhoneMobile.test("+84.866.888.999")); // true
      console.log(isVNPhoneMobile.test("0 866 888 999")); // true
      console.log(isVNPhoneMobile.test("0866 888 999")); // true
      console.log(isVNPhoneMobile.test("+84 866 888 999")); // true
      console.log(isVNPhoneMobile.test("0966 888 999")); // true
      console.log(isVNPhoneMobile.test("0977 888 999")); // true
      console.log(isVNPhoneMobile.test("0988 888 999")); // true
      console.log(isVNPhoneMobile.test("0322 888 999")); // true
      console.log(isVNPhoneMobile.test("0333 888 999")); // true
      console.log(isVNPhoneMobile.test("0344 888 999")); // true
      console.log(isVNPhoneMobile.test("0355 888 999")); // true
      console.log(isVNPhoneMobile.test("0366 888 999")); // true
      console.log(isVNPhoneMobile.test("0377 888 999")); // true
      console.log(isVNPhoneMobile.test("0388 888 999")); // true
      console.log(isVNPhoneMobile.test("0399 888 999")); // true
      
      console.log(isVNPhoneMobile.test("0899 888 999")); // true - Mobifone
      console.log(isVNPhoneMobile.test("0900 888 999")); // true
      console.log(isVNPhoneMobile.test("0933 888 999")); // true
      console.log(isVNPhoneMobile.test("0700 888 999")); // true
      console.log(isVNPhoneMobile.test("0799 888 999")); // true
      console.log(isVNPhoneMobile.test("0777 888 999")); // true
      console.log(isVNPhoneMobile.test("0766 888 999")); // true
      console.log(isVNPhoneMobile.test("0788 888 999")); // true
      
      console.log(isVNPhoneMobile.test("0888 888 999")); // true - Vinaphone
      console.log(isVNPhoneMobile.test("0911 888 999")); // true
      console.log(isVNPhoneMobile.test("0944 888 999")); // true
      console.log(isVNPhoneMobile.test("0833 888 999")); // true
      console.log(isVNPhoneMobile.test("0844 888 999")); // true
      console.log(isVNPhoneMobile.test("0855 888 999")); // true
      console.log(isVNPhoneMobile.test("0811 888 999")); // true
      console.log(isVNPhoneMobile.test("0822 888 999")); // true
      
      console.log(isVNPhoneMobile.test("0922 888 999")); // true - Vietnamobile
      console.log(isVNPhoneMobile.test("0566 888 999")); // true
      console.log(isVNPhoneMobile.test("0588 888 999")); // true
      
      console.log(isVNPhoneMobile.test("0999 888 999")); // true - GMobile
      console.log(isVNPhoneMobile.test("0599 888 999")); // true
      
      console.log(isVNPhoneMobile.test("1234 567 890")); // false
      console.log(isVNPhoneMobile.test("0311 888 999")); // false
      console.log(isVNPhoneMobile.test("0511 888 999")); // false
      console.log(isVNPhoneMobile.test("0522 888 999")); // false
      console.log(isVNPhoneMobile.test("0533 888 999")); // false
      console.log(isVNPhoneMobile.test("0544 888 999")); // false
      console.log(isVNPhoneMobile.test("0555 888 999")); // false
      console.log(isVNPhoneMobile.test("0711 888 999")); // false
      console.log(isVNPhoneMobile.test("0722 888 999")); // false
      console.log(isVNPhoneMobile.test("0733 888 999")); // false
      console.log(isVNPhoneMobile.test("0744 888 999")); // false
      console.log(isVNPhoneMobile.test("0755 888 999")); // false
      console.log(isVNPhoneMobile.test("0800 888 999")); // false
      console.log(isVNPhoneMobile.test("0877 888 999")); // false
      console.log(isVNPhoneMobile.test("0955 888 999")); // false
      

      Kiểm tra string là mật khẩu mạnh

      Mình định nghĩa một mật khẩu mạnh là cái thỏa mãn những điều kiện sau đây:

      • Có tối thiểu 8 ký tự
      • Có ít nhất một kí tự viết thường (a-z)
      • Có ít nhất một kí tự viết hoa (A-Z)
      • Có ít nhất một chữ số (0-9)
      • Có ít nhất một ký tự đặc biệt (!@#$%^&)
      const isStrongPassword = /^(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[!@#\$%\^&\*]).{8,}$/;
      
      console.log(isStrongPassword.test("Abcd!234")); // true
      console.log(isStrongPassword.test("aBcd1@345")); // true
      console.log(isStrongPassword.test("abCd12$4")); // true
      console.log(isStrongPassword.test("AbcD1234%")); // true
      console.log(isStrongPassword.test("@bcCd!234^")); // true
      console.log(isStrongPassword.test("@B&d!234&*7890")); // true
      console.log(isStrongPassword.test("12345678")); // false
      console.log(isStrongPassword.test("!2345678")); // false
      console.log(isStrongPassword.test("abcdefgh")); // false
      console.log(isStrongPassword.test("AcD1%")); // false
      console.log(isStrongPassword.test("ABCDEFGH")); // false
      

      Lời kết

      Trên đây là những biểu thức chính quy Regex thú vị mà mình sưu tầm được. Tuy nhiên, Regular Expression là một chủ đề khá phức tạp. Vì vậy, rất khó để có được những biểu thức chính quy Regex chính xác một cách tuyệt đối.

      Khi áp dụng vào project thực tế, mọi người vẫn nên kiểm tra lại. Hoặc kết hợp với các phương pháp khác để có được giải pháp chính xác nhất. Thay vì việc cứ copy-paste một solution nào đó trên mạng.

      Cuối cùng, nếu có phần nào khó hiểu hoặc có bài toán nào bạn chưa giải quyết được, thì bạn cứ thoải mái chia sẻ với mình!

      Thả tim (4 lượt thả tim)
      Loading...
      Previous Post

      RESTful Architecture

      Next Post

      Phân trang MYSQL, một bài toán đơn giản?

      DiemND

      DiemND

      Next Post
      Phân trang MYSQL, một bài toán đơn giản?

      Phân trang MYSQL, một bài toán đơn giản?

      Leave a Reply Cancel reply

      Your email address will not be published. Required fields are marked *

      Recent News

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      July 25, 2020
      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      June 26, 2020
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      May 31, 2020
      Lợi ích của việc tập thể dục thường xuyên

      Lợi ích của việc tập thể dục thường xuyên

      May 25, 2020
      DEVZONE

      Browse by Category

      • Algorithm
      • Architecture
      • Database
      • Design
      • Dev
      • DevOps
      • Idea
      • IoT
      • Lifestyle
      • Network
      • News
      • Test
      • Uncategorized
      • Web
      • About
      • Advertise
      • Privacy & Policy
      • Contact

      © 2019 Devzone

      No Result
      View All Result

      © 2019 Devzone