正则表达式总结

文章讲述了如何根据特定需求动态构建正则表达式来验证密码规则,包括最小长度、数字、大小写字母和特殊字符的要求。通过参数化的方法,用JavaScript编写函数根据传入的条件拼接字符串并转换为正则表达式对象。同时,指出了在处理字符串中的反斜杠时需要注意转义的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.字符串中不能包含 / \ : ? * " < > | % 符号

const reg = /^[^/\\::??"<>%\|]*$/

2.密码规则

至少 8 个字符
至少 1 位数
至少 1 个小写字母
至少 1 个大写字母
至少一个特殊字符
不包含空格(),反斜杠(\)和引号(“)

整体的正则表达式如下:

const pwdReg = /^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[!#$%&'()*+,-./:;<=>?@[\]^_`{|}~])(?=\S+$)(?!.*[\u0022\u005C]).{8,20}$/g;

遇到了一个需求:上述规则需要动态配置,也就是说正则表达式需要写成动态的,实现的方式就是根据条件拼字符串,然后转成正则表达式,直接写代码:

const pwdPolicyReg = (params: any) => {
  let pattern = "^";
  if (params?.passwordPolicyContainNumber) {
    pattern += "(?=.*[0-9])";
  }
  if (params?.passwordPolicyContainLowercase) {
    pattern += "(?=.*[a-z])";
  }
  if (params?.passwordPolicyContainUppercase) {
    pattern += "(?=.*[A-Z])";
  }
  if (params?.passwordPolicyContainSpecialCharacter) {
    pattern += '(?=.*[!#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~])';
  }
  pattern += `(?=\\S+$)(?!.*[\\u0022\\u005C]).{${params?.passwordPolicyMinLength},20}$`;
  return new RegExp(pattern, "g");
}

有个地方需要提示一下,正则表达式下的反斜杠(转义字符)处理特殊字符,转成字符串的时候需要写两个,因为在字符串中反斜杠也是个特殊字符,例如换行\n,\t空格等,因此,如果我们想在字符串中表示一个正则表达式中的反斜杠,就需要使用两个反斜杠,即\\。第一个反斜杠用于在字符串中进行转义,第二个反斜杠用于在正则表达式中进行转义。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值