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

如何在现有正则表达式中允许一组特殊字符?

刁星渊
2023-03-14

我们有正则表达式来验证一个数字、一个大写字母和一个小写字母的密码。正则表达式是:

^\w*(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])\w*$

这个正则表达式不允许任何特殊字符。我需要更改正则表达式以允许一些特殊字符列表,并且不应该有任何限制,必须至少有一个特殊字符。只有[-! $%^

我试过:

^\w*(?=\w*\d)(?=\w*[a-z])(?=\w*[A-Z])(?=\w*[-!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]*)\w*$ 

这似乎是错误的。请有人帮忙。


共有1个答案

夏雅志
2023-03-14

这是因为$之前的\w*。您特别试图将0匹配到许多单词...试试这个:

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[-\w!$%^&*()_+|~=`{}\[\]:";'<>?,.\/]+$

^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[\w\p{Punct}]+$

\p{Punct}是一个特殊的字符类,类似于[!" #$%

 类似资料:
  • 我的表单中有2个输入字段(电话号码),我应该验证这些输入。数字0-9和()-只允许,位数应该在5和11之间{5,11}。我试着用方法替换。你能解释一下,它是如何工作的吗?

  • 我需要一个javascript正则表达式来验证电话号码。数字不能是单个零或仅为零。 e. g. 这些是不允许的。 但这些是允许的: 到目前为止,我拥有的javascript正则表达式是: 但这似乎不起作用。 规则是电话号码可以包含数字和和和。它可以以0开头,但电话号码不能是单个0或仅包含或不包含上述字符的多个零。 你能给我指一下正确的方向吗。提前谢谢。

  • 我有一个类似这样的字符串: 但是我得到了一个 你知道我做错了什么吗?

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

  • 问题内容: Java或任何开放源代码库中是否有任何方法可以转义(不引用)特殊字符(元字符),以便将其用作正则表达式? 动态构建正则表达式非常方便,而不必手动转义每个字符。 例如,考虑一个简单的正则表达式,它匹配带小数点的数字,例如,以及以下代码: 毫不奇怪,以上代码产生的输出是: 也就是说,匹配项(但是“动态”构建的)不匹配(相反,它与文字字符串匹配)。 那么,有没有一种方法可以自动转义每个正则表

  • 我正在尝试编写一个正则表达式以允许数字和中间只有一个hypen(不能在开始或结束时)说模式:,是可以接受的,但模式:或或或或是不可接受的 我试过这样做,但这将允许-在开始时,也允许多个- 我不太擅长正则表达式,所以一点解释会很有帮助。 编辑:很抱歉再次打扰你,但我需要的数字只有2位(123-346)应被视为无效。