// 要求:6-18位,必须同时包含小写字母、大写字母、数字和特殊字符
// 特殊字符: `~!@#$%^&*()-_=+\|[\{}];:'",<.>/?
const test = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[`~!@#\$%\^&\*\(\)\\\-_=\+\|\[\{\}\];:'",<\.>\/\?])[0-9a-zA-Z`~!@#\$%\^&\*\(\)\\\-_=\+\|\[\{\}\];:'",<\.>\/\?]{6,18}$/;
let ss = 'AAss21$~';
console.log(ss.match(test))
console.log(test.test(ss))