Нужна помощь с расшифровкой регулярок
Есть код на JS
var strongRegex = new RegExp("^(?=.{8,})(?=.*[A-Z])(?=.*[a-z])(?=.*[0-9])(?=.*\\W).*$", "g");
var mediumRegex = new RegExp("^(?=.{8,})(((?=.*[A-Z])(?=.*[a-z]))|((?=.*[A-Z])(?=.*[0-9]))|((?=.*[a-z])(?=.*[0-9]))).*$", "g");
var enoughRegex = new RegExp("(?=.{8,}).*", "g");
enoughRegex - смотрит чтобы было не меньше 8 символов тут ясно
mediumRegex - не меньше 8 символов и большая и маленькая буква или большая и цифра или маленькая и цифра
strongRegex - не меньше 8 символов и большая и маленькая и цифра. Но что значит (?=.*\\W)?
Так же не пойму что значит .*$", "g" вконце. Помогите понять, нужно переписать на РНР.
Да и вообще, может кто-то знает более крутой способ проверки сложности пароля? Чтобы можно было юзануть и на js и на php ? Буду рад помощи!