【问题标题】:Regular expression for a string of two parts separated by dot由点分隔的两部分字符串的正则表达式
【发布时间】:2018-10-29 19:17:41
【问题描述】:

我需要为一个由'.'分隔的两部分组成的字符串编写一个正则表达式以下是条件,

  1. >.>:示例- Time01.Sheet
  2. 第一部分应包含字母数字字符,并且必须至少包含 1 个大写字母、1 个小写字母和 1 个数字。
  3. 第二部分应包含字母数字字符。

我的代码:((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=\\S+$).*)[.]([\\w]+)$

输入:Vijay.hello876IUY

实际输出:Valid data

预期输出:无效数据(因为第一部分不包含任何数字)

任何人请帮我解决这个问题...

【问题讨论】:

    标签: java regex


    【解决方案1】:

    你可以使用

    ^(?=[^.]*[a-z])(?=[^.]*[A-Z])(?=[^.]*[0-9])[a-zA-Z0-9]+\.[a-zA-Z0-9]+$
    

    请参阅regex demo。

    详情

    • ^ - 字符串开头
    • (?=[^.]*[a-z]) - 除. 之外的 0+ 个字符后必须有一个小写 ASCII 字母
    • (?=[^.]*[A-Z]) - 除了. 之外,在 0+ 个字符之后必须有一个大写的 ASCII 字母
    • (?=[^.]*[0-9]) - 除. 之外的 0+ 个字符后必须有一个数字
    • [a-zA-Z0-9]+ - 1+ 个字母数字字符
    • \. - 一个点
    • [a-zA-Z0-9]+ - 1+ 个字母数字字符
    • $ - 字符串结束。

    在 Java 中:

    s.matches("(?=[^.]*[a-z])(?=[^.]*[A-Z])(?=[^.]*[0-9])[a-zA-Z0-9]+\\.[a-zA-Z0-9]+")
    

    由于matches() 需要完整的字符串匹配,因此您不需要在开头的^ 和结尾的$。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 2014-08-17
      • 1970-01-01
      • 2017-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多