var regex = /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$%^&+=]).{9,}$/; if (regex.test(password)) { $(this).removeClass('invalid'); $(this).addClass('valid'); $('#note_add_user').hide(); $("#btnAddUser").prop("disabled", false).removeClass("disabled"); } 上述正则表达式如何把至少一个特殊符号里面包括标点符号
时间: 2024-03-30 20:33:55 浏览: 17
这个正则表达式使用了字符集(character set),其中包含了特殊符号 @#$%^&+=。这表示在密码中必须包含这些字符中的至少一个。如果你想要包括其他的标点符号,可以在这个字符集中添加你需要的符号。例如,如果你想要包括句号和感叹号,可以修改这个字符集为 [@#$%^&+=.!]。这样,密码中必须包含这些字符集中的至少一个字符才会被认为是有效的密码。
相关问题
$('#pwd, #pwd1').on('keydown keyup', function () { var password = $(this).val(); var regex = /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[@#$%^&+=]).{9}$/; if (regex.test(password)) { $(this).removeClass('invalid'); $(this).addClass('valid'); } else { $(this).removeClass('valid'); $(this).addClass('invalid'); } }); 这个正则表达是能正确的限制这个规则吗:长度必须大于等于9,且至少有1位数字,至少有1个字母,至少有1个特殊字符
是的,上面的正则表达式能够正确地限制密码的规则,即长度必须大于等于 9,且至少有 1 位数字、至少有 1 个字母、至少有 1 个特殊字符。
这个正则表达式由以下几个部分组成:
- `^` 匹配字符串的开始位置
- `(?=.*\d)` 匹配任意位置的一个数字,这个部分使用了正则表达式的正向肯定预查(Positive Lookahead),表示必须包含至少一个数字
- `(?=.*[a-zA-Z])` 匹配任意位置的一个字母,这个部分也使用了正向肯定预查,表示必须包含至少一个字母
- `(?=.*[@#$%^&+=])` 匹配任意位置的一个特殊字符,这个部分也使用了正向肯定预查,表示必须包含至少一个特殊字符
- `.{9,}` 匹配任意 9 个或以上的字符,其中 `.` 表示匹配任意字符,而 `{9,}` 表示匹配 9 个或以上的字符
- `$` 匹配字符串的结束位置
因此,这个正则表达式能够正确地限制密码的规则。
解释代码 function urlEncode(str) { let strArr = []; let output = ''; strArr = Array.from(str); for (let v of strArr) { let regRule = /\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/g; output += v.match(regRule) ? encodeURIComponent(v) : encodeNoEmoji(v); } return output; } function encodeNoEmoji(str) { var output = ''; var x = 0; str = utf16to8(str.toString()); var regex = /(^[a-zA-Z0-9-_.]*)/; while (x < str.length) { var match = regex.exec(str.substr(x)); if (match !== null && match.length > 1 && match[1] !== '') { output += match[1]; x += match[1].length; } else { if (str[x] === ' ') output += '+'; else { var charCode = str.charCodeAt(x); var hexVal = charCode.toString(16); output += '%' + ( hexVal.length < 2 ? '0' : '' ) + hexVal.toUpperCase(); } x++; } } return output; } function utf16to8(str) { var out, i, len, c; out = ""; len = str.length; for(i = 0; i < len; i++) { c = str.charCodeAt(i); if ((c >= 0x0001) && (c <= 0x007F)) { out += str.charAt(i); } else if (c > 0x07FF) { out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } else { out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); } } return out; }
这段代码实现了一个函数 `urlEncode`,将给定的字符串进行 URL 编码。具体来说,它会将字符串中的非 ASCII 字符进行编码,同时保留空格和一些特殊字符(例如 `-`、`.`、`_`)。其中 `encodeNoEmoji` 函数实现了非 ASCII 字符的编码,它会先将字符串转换成 UTF-8 编码,然后根据 ASCII 码表对不同字符进行编码。除此之外,还有一个特殊处理,即对表情符号进行编码,因为表情符号的编码方式与普通字符不同。这里使用了正则表达式来匹配表情符号,如果匹配到则使用 `encodeURIComponent` 函数进行编码,否则调用 `encodeNoEmoji` 函数进行编码。最后,将所有编码后的字符拼接在一起,返回编码后的字符串。