Xác thực tên người dùng trong Python bằng regex

Thư viện Python để xác thực tên người dùng phù hợp để sử dụng trong các ứng dụng công khai nơi người dùng có thể chọn tên đăng nhập và tên miền phụ

Đặc trưng

  • Cung cấp trình xác thực regex mặc định
  • Xác thực đối với danh sách các từ bị cấm không được sử dụng làm tên người dùng
  • Trăn 2. 7, 3. 4, 3. 5, 3. 6, 3. 7, 3. 8 & pypi

Cài đặt

pip install python-usernames

Tập quán

from usernames import is_safe_username

>>> is_safe_username["jerk"]
False  # contains one of the banned words

>>> is_safe_username["handsome!"]
False  # contains non-url friendly `!`

is_safe_username nhận các đối số tùy chọn sau

  • import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    3. một danh sách các từ không phân biệt chữ hoa chữ thường nên được coi là luôn an toàn. Mặc định.
    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    4

    Biểu thức chính quy [viết tắt là regex hoặc RE] như tên gợi ý là một biểu thức chứa một chuỗi ký tự xác định mẫu tìm kiếm. Lấy một ví dụ về Biểu thức chính quy đơn giản này

    \b[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}\b 

    Biểu thức này có thể được sử dụng để tìm tất cả các email có thể có trong một kho văn bản lớn. Điều này rất hữu ích vì nếu không, bạn sẽ phải xem toàn bộ tài liệu văn bản theo cách thủ công và tìm mọi id email trong đó. Sau khi xem qua bài viết này, bạn sẽ biết cách hoạt động của Biểu thức chính quy ở trên và hơn thế nữa. Chúng ta có thể sử dụng các ngôn ngữ lập trình khác nhau như Java, Python, JavaScript, PHP và nhiều ngôn ngữ khác để triển khai Biểu thức chính quy nhưng có một số biến thể nhất định trong cách triển khai trên các ngôn ngữ này. Vì vậy, bây giờ chúng ta hãy xem các chủ đề phụ mà chúng ta sẽ đề cập trong bài viết này

    1. Cụm từ thông dụng trong Python là gì?
    2. Làm cách nào để viết Biểu thức chính quy trong Python?
    3. Ví dụ về Biểu thức chính quy trong Python
    4. Chương trình biểu thức chính quy trong Python
      1. Xác thực email trong Python bằng Biểu thức chính quy
      2. Xác thực số điện thoại di động bằng Biểu thức chính quy trong Python

    Cụm từ thông dụng trong Python là gì?

    Trong Python, một Biểu thức chính quy [RE, biểu thức chính quy hoặc mẫu biểu thức chính quy] được nhập thông qua mô-đun re, một mô-đun được tích hợp sẵn trong Python nên bạn không cần cài đặt riêng

    Mô-đun re cung cấp một tập hợp các chức năng cho phép chúng tôi tìm kiếm một chuỗi để khớp

    FunctionDescriptionfindallTrả về một danh sách chứa tất cả các kết quả khớpTrả về một biểu thức chính quy objecsearchTrả về một đối tượng Khớp nếu có một kết quả trùng khớp ở bất kỳ đâu trong chuỗi phân táchTrả về một danh sách trong đó chuỗi đã được tách ở mỗi lần khớp. Thay thế một hoặc nhiều kết quả khớp bằng một chuỗi con. . nhóm Trả về một bộ chứa tất cả các nhóm con của đối sánh, từ 1 cho đến tuy nhiên có nhiều nhóm nằm trong đối sánh mẫu Tương tự như tìm kiếm, nhưng chỉ tìm kiếm trong dòng đầu tiên của văn bản

    Chúng ta sẽ sử dụng tất cả các phương thức này khi chúng ta biết cách viết Biểu thức chính quy mà chúng ta sẽ học trong phần tiếp theo

    Làm cách nào để viết Biểu thức chính quy trong Python?

    Để tìm hiểu cách viết RE, trước tiên chúng ta hãy làm rõ một số điều cơ bản. Trong RE, chúng tôi sử dụng ký tự chữ hoặc ký tự meta. nghĩa đen là chính các ký tự và không có ý nghĩa đặc biệt. Đây là một ví dụ trong đó tôi sử dụng các ký tự để tìm một chuỗi cụ thể trong văn bản bằng cách sử dụng phương thức findall của mô-đun re

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]

    đầu ra

    [‘Hussain’]

    Như bạn có thể thấy, chúng tôi đã sử dụng từ 'Hussain' để tìm nó trong văn bản. Điều này có vẻ không phải là một ý tưởng hay khi chúng ta phải trích xuất hàng nghìn tên từ một kho văn bản. Để làm được điều đó, chúng ta cần tìm một mẫu cụ thể và sử dụng các siêu ký tự

    siêu ký tự

    Siêu ký tự là các ký tự có ý nghĩa đặc biệt và chúng không được hiểu như trong trường hợp chữ. Chúng tôi có thể phân loại thêm các ký tự meta thành mã định danh và công cụ sửa đổi

    Mã định danh được sử dụng để nhận dạng một loại ký tự nhất định. Ví dụ: để tìm tất cả các ký tự số trong một chuỗi, chúng ta có thể sử dụng mã định danh '/d'

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]

    đầu ra

    [‘9’, ‘2’, ‘3’]

    Nhưng dường như có một vấn đề với điều này. Nó chỉ trả về các số có một chữ số và thậm chí tệ nhất là chia số 23 thành hai chữ số. Vậy làm thế nào chúng ta có thể giải quyết vấn đề này, có thể sử dụng hai trợ giúp \d không?

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d\d",string]]

    đầu ra

    [’23’]

    Sử dụng hai số nhận dạng đã giúp ích, nhưng hiện tại nó chỉ có thể tìm thấy các số có hai chữ số, đây không phải là điều chúng tôi muốn

    Một cách để giải quyết vấn đề này sẽ là các công cụ sửa đổi, nhưng trước tiên, đây là một số mã định danh mà chúng ta có thể sử dụng trong Python. Chúng tôi sẽ sử dụng một số trong số chúng trong các ví dụ chúng tôi sẽ làm trong phần tiếp theo.  

     \d = any number
    \D = anything but a number
    \s = space
    \S = anything but a space
    \w = any letter
    \W = anything but a letter
    . = any character, except for a new line
    \b = space around whole words
    \. = period. must use a backslash, because ‘ . ‘ normally means any character.

    Công cụ sửa đổi là một tập hợp các siêu ký tự bổ sung thêm chức năng cho số nhận dạng. Quay trở lại ví dụ trên, chúng ta sẽ xem cách chúng ta có thể sử dụng công cụ sửa đổi “ + ” để lấy các số có độ dài bất kỳ từ chuỗi. Công cụ sửa đổi này trả về một chuỗi khi nó khớp với 1 hoặc nhiều ký tự

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d+",string]]

    đầu ra

    [‘9′, ’23’]

    Tuyệt quá. cuối cùng, chúng tôi đã nhận được kết quả mong muốn của chúng tôi. Bằng cách sử dụng công cụ sửa đổi '+' với định danh /d, tôi có thể trích xuất các số có độ dài bất kỳ. Dưới đây là một số công cụ sửa đổi mà chúng tôi cũng sẽ sử dụng trong phần ví dụ phía trước

    ________số 8

    Bạn có để ý rằng chúng ta đang sử dụng ký tự r ở đầu tất cả RE, ký tự r này được gọi là ký tự chuỗi thô. Nó thay đổi cách diễn giải chuỗi ký tự. Những chữ như vậy được lưu trữ khi chúng xuất hiện

    Ví dụ: \ thường được hiểu là một chuỗi thoát nhưng nó chỉ là dấu gạch chéo ngược khi có tiền tố là r. Bạn sẽ thấy điều này có nghĩa là gì với các ký tự đặc biệt. Đôi khi, cú pháp liên quan đến các ký tự thoát dấu gạch chéo ngược và để ngăn các ký tự này được hiểu là chuỗi thoát, chúng tôi sử dụng chuỗi ký tự thô này

    Ví dụ về Biểu thức chính quy trong Python

    Hãy để chúng tôi khám phá một số ví dụ liên quan đến ký tự meta. Ở đây chúng ta sẽ xem cách chúng ta sử dụng các ký tự meta khác nhau và tác dụng của chúng đối với đầu ra

    import re
    string="get out Of my house !!!"
    print[re.findall[r"\w+",string]]

    đầu ra

    ['đi ra khỏi nhà tôi']

    from usernames import is_safe_username
    
    >>> is_safe_username["jerk"]
    False  # contains one of the banned words
    
    >>> is_safe_username["handsome!"]
    False  # contains non-url friendly `!`
    
    0

    đầu ra

    ['lấy', 'ra', 'Của', 'của tôi', 'se']

    from usernames import is_safe_username
    
    >>> is_safe_username["jerk"]
    False  # contains one of the banned words
    
    >>> is_safe_username["handsome!"]
    False  # contains non-url friendly `!`
    
    1

    đầu ra

    ['abc', 'abbbc', 'ac']

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    0

    đầu ra

    ['abc', 'abbbc']

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    1

    đầu ra

    ['Của tôi']

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    2

    đầu ra

    ['tên', 'tên', 'là']

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    3

    đầu ra

    [‘Mujtaba’, ‘M12. một']

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    4

    đầu ra

    [‘1’, ‘2’, ‘3’, ‘3’]

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    5

    đầu ra

    [‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘\n’]

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    6

    đầu ra

    ['Ấn Độ']

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    7

    đầu ra

    ['xin chào', 'am', 'từ', 'Ấn Độ']

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    8

    đầu ra

    ['xin chào']

    import re
    string="Hello my name is Hussain"
    print[re.findall[r"Hussain",string]]
    9

    đầu ra

    ['l', 'e']

    Bây giờ chúng ta đã thấy đủ các siêu ký tự, chúng ta sẽ xem một số phương pháp của mô-đun lại hoạt động như thế nào. Đầu tiên, chúng ta hãy bắt đầu với lại. biên dịch

    lại. biên dịch

    Chúng ta có thể kết hợp một mẫu biểu thức chính quy vào các đối tượng mẫu, có thể được sử dụng để khớp mẫu. Nó cũng giúp tìm kiếm lại một mẫu mà không cần viết lại. Đây là một ví dụ

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    0

    đầu ra

    ['Tuyệt', 'Học']

    lại. Tìm kiếm

    Ở đó. chức năng tìm kiếm tìm kiếm chuỗi khớp và trả về một đối tượng Match nếu có kết quả khớp. Nếu có nhiều hơn một trận đấu, chỉ lần xuất hiện đầu tiên của trận đấu sẽ được trả về. Đây là một ví dụ

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    1

    đầu ra

    lại. tách ra

    Ở đó. hàm split trả về một danh sách trong đó chuỗi đã được tách ở mỗi trận đấu

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    2

    đầu ra

    ['một hai ba bốn']

    lại. phụ

    Ở đó. chức năng phụ thay thế các trận đấu bằng văn bản bạn chọn

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    3
    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    4

    lại. subn

    Như đã đề cập trước đó, lại. chức năng subn tương tự như re. hàm phụ nhưng nó trả về một bộ gồm 2 mục chứa chuỗi mới và số lần thay thế được thực hiện

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    5
    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    6

    lại. cuộc thi đấu

    lại. hàm khớp sẽ tìm kiếm mẫu biểu thức chính quy và trả về lần xuất hiện đầu tiên. Phương thức này chỉ kiểm tra sự trùng khớp ở đầu chuỗi. Vì vậy, nếu một kết quả khớp được tìm thấy trong dòng đầu tiên, nó sẽ trả về đối tượng khớp. Nhưng nếu một kết quả phù hợp được tìm thấy trong một số dòng khác, nó sẽ trả về giá trị rỗng. Đây là một ví dụ

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    7

    đầu ra

                                                                                                                                                                                                                       None  

    lại. tập đoàn

    Ở đó. hàm nhóm trả về toàn bộ kết quả khớp [hoặc số nhóm con cụ thể]. Chúng ta có thể đề cập đến các nhóm con trong Biểu thức chính quy nếu chúng ta đặt chúng trong ngoặc đơn. Đây là một ví dụ để làm cho nó rõ ràng

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    8

    đầu ra

    matchObj. tập đoàn[]. Chó trung thành hơn mèo                                                                          matchObj. nhóm 1]. Chó                                                                                                      trận đấuObj. nhóm[2]. hơn

    Chúng tôi xác định một nhóm trong Biểu thức chính quy bằng cách đặt chúng trong dấu ngoặc đơn. Như bạn có thể thấy, chúng tôi đã xác định hai nhóm trong Biểu thức chính quy ở trên, một nhóm ở trước và nhóm khác ở sau nó. Vì vậy, trong nhóm 1, chúng tôi có chó và trong nhóm 2, chúng tôi có nhiều hơn

    Chương trình biểu thức chính quy trong Python

    Bây giờ chúng ta đã biết cách sử dụng các RE khác nhau, chúng ta sẽ sử dụng chúng để viết một số chương trình nhất định. Vì vậy, trước tiên chúng ta hãy viết một chương trình có thể xác thực id email

    Xác thực email trong Python bằng Biểu thức chính quy

    Chương trình này sẽ lấy các id email khác nhau và kiểm tra xem id email đã cho có hợp lệ hay không. Đầu tiên, chúng tôi sẽ tìm các mẫu trong các id email khác nhau và sau đó tùy thuộc vào đó, chúng tôi thiết kế một RE có thể xác định email. Bây giờ chúng ta hãy xem xét một số email hợp lệ

    • dani123@gmail. com
    • mysite@ourearth. com
    • của tôi. ownsite@ourearth. tổ chức
    • mysite@you. tôi. mạng lưới
    • rahimrar@jkbnet. Trong

    Bây giờ chúng ta hãy xem xét một số ví dụ về id email không hợp lệ

    • trang web của tôi. trái đất của chúng ta. com [@ không có mặt]
    • trang web của tôi @. com. [ tld [Tên miền cấp cao nhất] của tôi không thể bắt đầu bằng dấu chấm “. ” ]
    • @bạn. tôi. net [ Không có ký tự trước @ ]
    • mysite123@gmail. b [ “. b” không phải là một tld hợp lệ]
    • trang web của tôi @. tổ chức. org [ tld không thể bắt đầu bằng dấu chấm “. ” ]
    • mysite@mysite. org [ email không nên bắt đầu bằng “. ” ]
    • mysite[]*@gmail. com [ ở đây biểu thức chính quy chỉ cho phép ký tự, chữ số, dấu gạch dưới và dấu gạch ngang ]
    • trang web của tôi. 1234@yahoo. com [không được chấm đôi]

    Từ các ví dụ trên, chúng tôi có thể tìm thấy các mẫu này trong id email

    Phần Personal_info chứa các ký tự ASCII sau

    1. Chữ hoa [A-Z] và chữ thường [a-z] chữ cái tiếng Anh
    2. Chữ số [0-9]
    3. Nhân vật. # $ % & ‘ * + – / = ? . } ~
    4. Tính cách. [dấu chấm, dấu chấm hoặc dấu chấm] miễn là nó không phải là ký tự đầu tiên hoặc ký tự cuối cùng và nó sẽ không xuất hiện lần lượt sau ký tự kia

    Phần tên miền [ví dụ com, org, net, in, us, info] chứa các chữ cái, chữ số, dấu gạch nối và dấu chấm.
    Cuối cùng, đây là chương trình có thể xác thực id email bằng Biểu thức chính quy

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d",string]]
    9

    đầu ra

    Email hợp lệ
    Email không hợp lệ 

    Xác thực số điện thoại di động bằng Biểu thức chính quy trong Python

    Trong phần này, chúng tôi sẽ xác thực các số điện thoại. Vì định dạng của các số điện thoại có thể khác nhau, chúng tôi sẽ tạo một chương trình có thể xác định các số đó

    • +91-1234-567-890
    • +911234567890
    • +911234-567890
    • 01234567890
    • 01234-567890
    • 1234-567-890
    • 1234567890

    Ở đây chúng ta có thể thấy một số có thể có tiền tố là +91 0r 0. Ngoài ra, có thể có dấu gạch ngang sau bốn chữ số đầu tiên của số và sau mỗi 3 chữ số. Bạn có thể cố gắng tìm thêm các mẫu nếu chúng tồn tại và sau đó viết biểu thức chính quy của riêng bạn

    import re
    string="Hello I live on street 9 which is near street 23"
    print[re.findall[r"\d\d",string]]
    0

    đầu ra

    Số hợp lệ
    Số hợp lệ
    Số hợp lệ
    Số hợp lệ
    Hợp lệ
    Valid Number
    Valid Number
    Invalid Number
    Invalid Number

    Điều này đưa chúng ta đến phần cuối của bài viết này, nơi chúng ta đã tìm hiểu về Biểu thức chính quy trong Python và cách sử dụng chúng trong các tình huống khác nhau. Bạn có thể tham gia khóa học miễn phí về Python dành cho Máy học từ học viện Great Learning, chỉ cần nhấp vào biểu ngữ bên dưới

    Làm cách nào để xác thực tên người dùng bằng regex?

    Biểu thức chính quy để xác thực tên người dùng .
    Chỉ chứa các ký tự chữ và số, dấu gạch dưới và dấu chấm
    Dấu gạch dưới và dấu chấm không được ở cuối hoặc đầu tên người dùng [e. g _tên người dùng / tên người dùng_ /. .
    Dấu gạch dưới và dấu chấm không được ở cạnh nhau [e. người dùng g_. Tên ]

    Làm cách nào để sử dụng xác thực regex trong Python?

    Phương pháp 2. Xác thực mật khẩu bằng Python Regex Match .
    Nhập mô-đun lại
    Sử dụng hàm compile[] của re module để tạo các đối tượng Regex. .
    Cuối cùng, chúng tôi so sánh mẫu đã xác định và mật khẩu đầu vào được cung cấp

    *$ nghĩa là gì trong regex?

    *$ có nghĩa là - khớp, từ đầu đến cuối, bất kỳ ký tự nào xuất hiện từ 0 lần trở lên . Về cơ bản, điều đó có nghĩa là - khớp mọi thứ từ đầu đến cuối chuỗi.

    Điều gì có thể được xác thực với regex này?

    Xác thực RegEx về cơ bản là kiểm tra cú pháp để có thể xem địa chỉ email có được viết đúng chính tả hay không, không có dấu cách, dấu phẩy và tất cả @s, dấu chấm và tên miền . .

Chủ Đề