Hướng dẫn regex password python - mật khẩu regex python

Sử dụng Regex trong Python, làm thế nào tôi có thể xác minh rằng mật khẩu của người dùng là:

  • Ít nhất 8 ký tự
  • Phải bị hạn chế, mặc dù không yêu cầu cụ thể:
    • Chữ hoa: A-Z
    • Chữ thường: A-Z
    • Số: 0-9
    • Bất kỳ ký tự đặc biệt nào: @#$%^&+= =

Lưu ý, tất cả các chữ cái/số/ký tự đặc biệt là tùy chọn. Tôi chỉ muốn xác minh rằng mật khẩu có độ dài ít nhất 8 chars và bị giới hạn trong chữ cái/số/char đặc biệt. Tùy thuộc vào người dùng để chọn mật khẩu mạnh hơn / yếu hơn nếu họ chọn. Cho đến nay những gì tôi có là:

import re
pattern = "^.*(?=.{8,})(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%^&+=]).*$"
password = raw_input("Enter string to test: ")
result = re.findall(pattern, password)
if (result):
    print "Valid password"
else:
    print "Password not valid"

hỏi ngày 7 tháng 6 năm 2010 lúc 15:10Jun 7, 2010 at 15:10

Hướng dẫn regex password python - mật khẩu regex python

6

import re
password = raw_input("Enter string to test: ")
if re.fullmatch(r'[A-Za-z0-9@#$%^&+=]{8,}', password):
    # match
else:
    # no match

import re
password = raw_input("Enter string to test: ")
if re.fullmatch(r'[A-Za-z0-9@#$%^&+=]{8,}', password):
    # match
else:
    # no match
0 có nghĩa là "ít nhất 8". Hàm
import re
password = raw_input("Enter string to test: ")
if re.fullmatch(r'[A-Za-z0-9@#$%^&+=]{8,}', password):
    # match
else:
    # no match
1 yêu cầu toàn bộ chuỗi để khớp với toàn bộ regex, không chỉ là một phần.

Hướng dẫn regex password python - mật khẩu regex python

Đã trả lời ngày 7 tháng 6 năm 2010 lúc 15:13Jun 7, 2010 at 15:13

AmberamberAmber

490K81 Huy hiệu vàng617 Huy hiệu bạc545 Huy hiệu Đồng81 gold badges617 silver badges545 bronze badges

6

Tôi đồng ý với Hammish. Không sử dụng một regex cho điều này. Sử dụng các chức năng riêng biệt cho mỗi và mọi bài kiểm tra và sau đó gọi chúng theo trình tự. Năm tới khi bạn muốn yêu cầu ít nhất 2 chữ cái trên và 2 chữ cái trong mật khẩu, bạn sẽ không hài lòng khi cố gắng sửa đổi Regex đó.

Một lý do khác cho điều này là để cho phép cấu hình người dùng. Giả sử bạn bán chương trình của bạn cho một người muốn có 12 mật khẩu ký tự. Việc sửa đổi một chức năng duy nhất dễ dàng hơn để xử lý các tham số hệ thống hơn là sửa đổi Regex.

// pseudo-code
Bool PwdCheckLength(String pwd)
{
    Int minLen = getSystemParameter("MinPwdLen");
    return pwd.len() < minlen;
}

Đã trả lời ngày 7 tháng 6 năm 2010 lúc 15:20Jun 7, 2010 at 15:20

jmucchiellojmucchiellojmucchiello

Phim huy hiệu vàng 18,4K77 gold badges40 silver badges61 bronze badges

0

Vâng, đây là giải pháp không phải là regex của tôi (vẫn cần một số công việc):

#TODO: the initialization below is incomplete
hardCodedSetOfAllowedCharacters = set(c for c in '0123456789a...zA...Z~!@#$%^&*()_+')
def getPassword():
    password = raw_input("Enter string to test: ").strip()
    if (len(password) < 8):
        raise AppropriateError("password is too short")
    if any(passChar not in hardCodedSetOfAllowedCharacters for passChar in password):
        raise AppropriateError("password contains illegal characters")
    return password

Đã trả lời ngày 7 tháng 6 năm 2010 lúc 15:20Jun 7, 2010 at 15:20

jmucchiellojmucchielloHamish Grubijan

Phim huy hiệu vàng 18,4K723 gold badges96 silver badges147 bronze badges

1

import re
password=raw_input("Please give me a password: ")
if len(re.findall("[A-Za-z0-9@#$%^&+=]",password))==len(password):
    print("Great password")
else:
    print("Incorrect password")

Vâng, đây là giải pháp không phải là regex của tôi (vẫn cần một số công việc):

Hamish Grubijanhamish GrubijanAug 4, 2017 at 14:06

Hướng dẫn regex password python - mật khẩu regex python

0

import re 

password = input("Enter Password")
True if (re.fullmatch(r'^[A-Za-z0-9@#$%^&+=]{8,}$', password)) else False

10,4K23 Huy hiệu vàng96 Huy hiệu bạc147 Huy hiệu đồng

True if (re.fullmatch(r'^(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.[@#$%^&+=])[A-Za-z0-9@#$%^&+=]{8,}$', password)) else False

Nếu bạn muốn chạy nó trong Python 3.0 trở lên, thay đổi raw_input với đầu vào.

Đã trả lời ngày 4 tháng 8 năm 2017 lúc 14:06Oct 12, 2020 at 16:04

Tuy nhiên, nếu bạn muốn thực hiện các bit thứ hai cần thiết, bạn có thể thực hiện như sau:-

import re

while True:
    print('Input a strong password.')
    password = input()
    if re.match(r'[A-Za-z0-9@#$%^&+=]{8,}', password):
        print('Very nice password. Much secure')
        break
    else:
        print('Not a valid password')

Lưu ý: [0-9] Trong Python là một tập hợp con của \ D vì vậy bạn có thể muốn gắn bó với [0-9] Đọc bài đăng sau https://stackoverflow.com/a/6479605/4170558Mar 22, 2017 at 6:32

Đã trả lời ngày 12 tháng 10 năm 2020 lúc 16:04

  • Nếu bạn muốn chương trình liên tục chạy cho đến khi một mật khẩu chính xác được nhập thì hãy làm như sau.
  • Đã trả lời ngày 22 tháng 3 năm 2017 lúc 6:32
  • Regex này xác nhận nếu mật khẩu:

    Chữ hoa: A-Z -LowerCase Thư: A-Z

Hướng dẫn regex password python - mật khẩu regex python

serv-inc

Số: 0-99 gold badges150 silver badges177 bronze badges

Bất kỳ ký tự đặc biệt nào:!@£ $%^&*() _+= {} ?: ~ []]+Jun 8, 2017 at 10:10

Hướng dẫn regex password python - mật khẩu regex python

________số 8Gregory

33.9K9 Huy hiệu vàng150 Huy hiệu bạc177 Huy hiệu đồng4 gold badges27 silver badges26 bronze badges

Đã trả lời ngày 8 tháng 6 năm 2017 lúc 10:10

  • Số: 0-9
  • Chữ thường: A-Z
  • Chữ hoa: A-Z
  • Số: 0-9
  • Bất kỳ ký tự đặc biệt nào: @#$%^&+= =
p = password

def is_valid(p):
    if (len(p) >= 8 and
        re.search(r'\d+', p) and
        re.search(r'[a-z]+', p) and
        re.search(r'[A-Z]+', p) and
        re.search(r'\W+', p) and not
        re.search(r'\s+', p)):
        return True
    else:
        return False```

Lưu ý, tất cả các chữ cái/số/ký tự đặc biệt là tùy chọn. Tôi chỉ muốn xác minh rằng mật khẩu có độ dài ít nhất 8 chars và bị giới hạn trong chữ cái/số/char đặc biệt. Tùy thuộc vào người dùng để chọn mật khẩu mạnh hơn / yếu hơn nếu họ chọn. Cho đến nay những gì tôi có là:Jul 6 at 11:27

Hướng dẫn regex password python - mật khẩu regex python