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

Java正则表达式验证字符串[重复]

白腾
2023-03-14

关于正则表达式有很多类似的问题,但我仍然对以下情况感到困惑:

import java.util.regex.Pattern;

public class PatternTest {

  public static void main(String[] args) {
    String PATTERN = "((?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{8,20})";
    Pattern pattern = Pattern.compile(PATTERN);

    boolean isTrue = pattern.matcher("nks#n1Kos2~([{&").matches();

    System.out.println(isTrue);
  }

}

~([{

下面是Java正则表达式测试器https://www.freeformatter.com/java-regex-tester.html#ad-output


共有2个答案

程凯定
2023-03-14
匿名用户

<代码>(?=x)模式是零宽度正前瞻断言。所以他们断言在搜索字符串中找到正则表达式,而不消耗任何正则表达式。所有这些断言都成功传递。

.{8,20}模式表示匹配任何字符,只要其中有8到20个字符(包括8到20个字符)。所以它匹配整个字符串。

翁良弼
2023-03-14

您的正则表达式是:

String PATTERN = "(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%]).{8,20}";

这意味着匹配长度为8到20的任何字符,该字符满足“前瞻”中给出的所有条件。

你真正需要的是:

String PATTERN = "(?=.*\\d)(?=.*[a-z])(?=.*[A-Z])(?=.*[@#$%])[a-zA-Z\\d@#$%]{8,20}";

[a-zA-Z\\d@#$%]{8,20}将只匹配长度为8到20的[...]中允许的字符。

 类似资料:
  • 本文向大家介绍JS正则表达式验证中文字符,包括了JS正则表达式验证中文字符的使用技巧和注意事项,需要的朋友参考一下 正则表达式:"^[\u4e00-\u9fa5]{0,}$" 、 "/^[\u4E00-\u9FA5]{1,5}$/" 的含义: 在JS里,\uXXXX 是转义字符,"XXXX"对应的是16进制Unicode编码; ^ 匹配一行的开始。例如正则表达式^123能够匹配字符串"12345"

  • 我有一个包含数千行的文本文件。这里有一个例子 我试图提取'nt60'、'nt50'末尾的字符串。 问题是会包含行尾字符() 我想使用正则表达式搜索来匹配从 (') 开始的字符串,但我不知道我应该用什么来匹配 。 有人能帮忙吗?

  • 我想生成具有此表单的随机字符串 [A-Za-z0-9]{5,10} 我不知道怎么做,我应该用正则表达式还是随机函数?

  • 我的正则表达式是 当我在java中使用Pattern.complie()编译时,我得到了*非法重复字符* 我测试了这个正则表达式 当我编译这个时,它没有显示错误。 为什么会发生这种情况?

  • 我不熟悉Javascript和正则表达式,所以我一直在研究如何使路由匹配所有以

  • 主要内容:标签属性,JSF验证整数范围实例标签用于将字符串值验证为所需格式。 以下代码显示如何使用标记。 标签属性 属性 说明 pattern 格式化模式 JSF验证整数范围实例 打开 NetBeans IDE 创建一个Web工程:ValidateRegularExpression,其目录结构如下所示 - 创建以下文件代码,文件:index.xhtml 的代码内容如下所示 - 文件:result.xhtml 的代码内容如下所示 - 文件: