const reg = /^(?:(?=.*[0-9].*)(?=.*[A-Za-z].*)(?=.*[,\.#%'\+\*\-:;^_`].*))[,\.#%'\+\*\-:;^_`0-9A-Za-z]{8,}$/;
解析:
^表示开头位置
()表示捕获分组,()会把每个分组里的匹配的值保存起来,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推;
(?:)表示非捕获分组,和捕获分组唯一的区别在于,非捕获分组匹配的值;不会保存起来;
?= 询问后面跟着的东西是否等于这个
(?=.*[0-9