Hướng dẫn php regex password special characters - ký tự đặc biệt của mật khẩu php regex

Tôi hiện đang thực hiện một số bài kiểm tra với Regex. Tôi đã có một bài tập yêu cầu kiểm tra mật khẩu mạnh, điều đó có nghĩa là nó nên có: ít nhất một số, một chữ cái viết thường, một chữ cái viết hoa, không có khoảng trắng và ít nhất một ký tự không phải là chữ cái hoặc số. Và nó nên nằm trong khoảng 8-16 ký tự.

Tôi đã viết mã này:

     = 8 && strlen($pass) < 17)
     {
       if(preg_match("/^\w*(?=\w*\d)(?=\w*[A-Z])(?=\w*[^0-9A-Za-z])(?=\w*[a-z])\w*$/", $pass) )
        echo "$pass => MATCH
"; else echo "$pass => FAIL
"; } else echo "$pass => FAIL(because of length)
"; } ?>

Hai người cuối cùng nên phù hợp nhưng họ thất bại. Tôi nghĩ rằng vấn đề đứng ở

(?=\w*[^0-9A-Za-z])

được cho là phù hợp với mô hình để có ít nhất một ký tự không phải là một chữ cái hoặc một số, nhưng tôi không thể hiểu tại sao. Tôi biết mật khẩu mạnh này được giải quyết trên internet nhưng đó không phải là vấn đề của tôi. Vấn đề của tôi là tại sao phần công việc đó không làm những gì được cho là phải làm.

hỏi ngày 26 tháng 2 năm 2017 lúc 10:17Feb 26, 2017 at 10:17

Hướng dẫn php regex password special characters - ký tự đặc biệt của mật khẩu php regex

10

Bạn có thể chia regex của bạn thành các séc khác nhau.

Nó sẽ cho phép bạn viết các điều kiện dễ đọc hơn và hiển thị các thông báo lỗi cụ thể. Mặc dù, các mẫu RegEXP sẽ dễ viết hơn và hiểu.

I E. :

$errors = array();
if (strlen($pass) < 8 || strlen($pass) > 16) {
    $errors[] = "Password should be min 8 characters and max 16 characters";
}
if (!preg_match("/\d/", $pass)) {
    $errors[] = "Password should contain at least one digit";
}
if (!preg_match("/[A-Z]/", $pass)) {
    $errors[] = "Password should contain at least one Capital Letter";
}
if (!preg_match("/[a-z]/", $pass)) {
    $errors[] = "Password should contain at least one small Letter";
}
if (!preg_match("/\W/", $pass)) {
    $errors[] = "Password should contain at least one special character";
}
if (preg_match("/\s/", $pass)) {
    $errors[] = "Password should not contain any white space";
}

if ($errors) {
    foreach ($errors as $error) {
        echo $error . "\n";
    }
    die();
} else {
    echo "$pass => MATCH\n";
}

Hy vọng nó giúp.

sau đó

9.3185 Huy hiệu vàng28 Huy hiệu bạc40 Huy hiệu đồng5 gold badges28 silver badges40 bronze badges

Đã trả lời ngày 26 tháng 2 năm 2017 lúc 10:41Feb 26, 2017 at 10:41

JazzjazzJazZ

4.3242 Huy hiệu vàng19 Huy hiệu bạc39 Huy hiệu đồng2 gold badges19 silver badges39 bronze badges

2

Bạn có thể thử điều này:

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])(?!.* )(?=.*[^a-zA-Z0-9]).{8,16}$

Nó bao gồm tất cả các yêu cầu của bạn

Giải trình

  1. (?=.*\d) ít nhất một chữ số
  2. (?=\w*[^0-9A-Za-z])
    
    0 Ít nhất một chữ cái thường
  3. (?=\w*[^0-9A-Za-z])
    
    1 ít nhất một chữ cái trên
  4. (?=\w*[^0-9A-Za-z])
    
    2 Không có không gian
  5. (?=\w*[^0-9A-Za-z])
    
    3 Ít nhất một nhân vật ngoại trừ
    (?=\w*[^0-9A-Za-z])
    
    4
  6. (?=\w*[^0-9A-Za-z])
    
    5 từ 8 đến 16 ký tự

Mã mẫu:


Chạy nó ở đây

Hướng dẫn php regex password special characters - ký tự đặc biệt của mật khẩu php regex

Đã trả lời ngày 26 tháng 2 năm 2017 lúc 10:45Feb 26, 2017 at 10:45

Mustofa Rizwanmustofa RizwanMustofa Rizwan

10.1k2 Huy hiệu vàng25 Huy hiệu bạc42 Huy hiệu đồng2 gold badges25 silver badges42 bronze badges

5

^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[#?!@$%^&*-]).{8,}\S+$

//The rule is at least
   one upper case, one lower case, one digit[0-9], 
   one special character[#?!@$%^&*-] and the minimum length should be 8.

Đã trả lời ngày 26 tháng 2 năm 2017 lúc 10:40Feb 26, 2017 at 10:40

SrikrushnasrikrushnaSrikrushna

3,8551 Huy hiệu vàng36 Huy hiệu bạc45 Huy hiệu đồng1 gold badge36 silver badges45 bronze badges

Sử dụng Regex đơn giản này để kiểm tra mật khẩu mạnh

/(?=^.{8,}$)(?=.{0,}[A-Z])(?=.{0,}[a-z])(?=.{0,}\W)(?=.{0,}\d)/g

Javascript:

var password = "Abcdef@1234"
var passwordRegex = /(?=^.{8,}$)(?=.{0,}[A-Z])(?=.{0,}[a-z])(?=.{0,}\W)(?=.{0,}\d)/g

var isStrongPassword = passwordRegex.test(password)

console.log(isStrongPassword, "")
  1. Độ dài tối thiểu 8 ký tự
  2. ít nhất 1 chữ hoa
  3. ít nhất 1 chữ thường
  4. ít nhất 1 nhân vật đặc biệt
  5. ít nhất 1 chữ số

Đã trả lời ngày 23 tháng 9 năm 2020 lúc 10:26Sep 23, 2020 at 10:26

Hướng dẫn php regex password special characters - ký tự đặc biệt của mật khẩu php regex

________số 8

Thêm ký tự đặc biệt theo yêu cầu.

Kiểm tra mã trên

  • Ít nhất 1 ký tự viết hoa
  • Ít nhất 1 ký tự viết thường
  • Ít nhất 1 chữ số
  • Ít nhất 1 nhân vật đặc biệt

Bấm vào đây để kiểm tra

Đã trả lời ngày 10 tháng 4 lúc 10:50Apr 10 at 10:50

Làm thế nào để xác thực mật khẩu với các ký tự đặc biệt trong PHP?

(? =.*\ D) ít nhất một chữ số ..
(? =.*[A-Z]) ít nhất một chữ cái thường
(? =.*[A-Z]) ít nhất một chữ cái trên ..
(?!.* ) không có không gian..
(?
. {8,16} Từ 8 đến 16 ký tự ..

Làm cách nào để lấy mật khẩu và xác nhận mật khẩu trong PHP?

Chỉ cần nhận cả mật khẩu và xác nhận các trường mật khẩu trong biểu mẫu Gửi PHP và kiểm tra cho bình đẳng: if ($ _post ["Mật khẩu"] === $ _POST ["isp xác nhận_password"]) {// Thành công!} other {// không thành công :(} trong đó mật khẩu và xác nhận_password là ID của các đầu vào văn bản HTML cho mật khẩu.if ($_POST["password"] === $_POST["confirm_password"]) { // success! } else { // failed :( } where password and confirm_password are the IDs of the HTML text inputs for the passwords.