当前位置: 首页 > 知识库问答 >
问题:

正则表达式以限制除少数以外的特殊字符

陶英纵
2023-03-14

我能够编写一个正则表达式来验证输入框的以下标准。

  1. 至少包含14个字符

正则表达式-

然而,这个正则表达式允许其他未提及的特殊字符。我想限制所有特殊字符,除了这些=!@$%^

有人可以帮助我修改给定的正则表达式与上述标准?


共有2个答案

农诚
2023-03-14

为什么不使用集合而不是正则表达式:

import string
upperSet   = set(string.ascii_uppercase)
lowerSet   = set(string.ascii_lowercase)
numberSet  = set("0123456789")
specialSet = set("+=!@#$%^&*")
allSets    = [upperSet,lowerSet,numberSet,specialSet] 
validSet   = set().union(*allSets)

isValid = len(pw)>=14 and validSet.issuperset(pw) \
          and all(s.intersection(pw) for s in allSets)

您还可以使用translate方法将每组字符转换为四个代码,然后检查这些代码是否完全存在于已翻译的字符串中:

validCheck = str.maketrans(string.ascii_letters + "0123456789" + "+=!@#$%^&*",
                           "1"*26+"2"*26+"3"*10+"4"*10)

isValid = len(pw)>=14 and set('1234') == set(pw.translate(validCheck))))
包德业
2023-03-14

而不是 允许任何字符您可以使用字符集将允许的字符限制为特定的字符集:

^(?=.*[0-9])(?=.*[a-z])(?=.*[A-Z])(?=.*[+=!@#$%^&*])(?=\\S+$)[0-9A-Za-z+=!@#$%^&*]{14,}$

 类似资料:
  • 我们目前正在使用在Java的函数中从字符串中删除特殊字符。我们注意到,当连字符与数字混合时,我们需要允许连字符。 不匹配连字符的示例: 1-2-3 -1-23-4562 --1--2--3--4- --9-a--7 425-12-3456 将匹配连字符的示例: < li> - a - b - c 沃尔玛超市 我们认为我们使用这个SO问题作为参考制定了一个正则表达式来满足后一个标准,但我们不知道如何

  • 问题内容: 我很难提出一个正则表达式,该正则表达式实际上会将某些特殊字符列入黑名单。 我需要使用它来验证输入字段中的数据(在Java Web应用程序中)。我们希望允许用户输入任何数字,字母(我们需要包括带重音的字符,例如法语或德语)和一些特殊字符,例如’-。等等 如何将诸如<>%$等的字符列入黑名单? 问题答案: 我只是将角色列入白名单。 使用正则表达式构建黑名单同样简单,但是你可能需要添加更多字

  • 我试图为密码字段创建一个验证,它只允许字符和 时有什么区别,以及哪些字符来自

  • 如何使用regex匹配任何单词而不显示指定的单词 我想去掉“你”这个词 我有一些词例如: 所以,这个项目的结果是:

  • 问题内容: 我有一个带有某些配置值的文本文件。以#开头的注释我试图找到一个正则表达式模式,该模式将找出以#开头的所有行。 因此,示例文件: 我想找到 因为只有这两行以#开头,所以我尝试了以下代码: 但是它总是输出空数组。有人可以帮忙吗? 问题答案: 你忘了多修饰符(你应该 不 使用单线改性剂;也是不区分大小写的修饰符是不必要的,因为还有ungreedy修改): 说明: 允许and 在行的开头/结尾

  • 问题内容: 我正在寻找符合以下规则的正则表达式。 允许的字符 字母:az / AZ 数字:0-9 特殊字符:〜@#$ ^&*()-_ + = [] {} | \,。?:( 应允许使用空格) 不允许 特殊字符:<>’“ /;`% 问题答案: 对于允许的字符,您可以使用 验证应仅由允许的字符组成的完整字符串。请注意,在结尾处(否则将是一个范围),并且转义了几个字符。 对于无效字符,您可以使用 检查他们