java - java中的正则表达式命令

标签 java regex

我了解正则表达式的基础知识,但我无法创建满足所有这些条件的正则表达式。谁能给我一个想法如何去做。

  1. 字符串长度必须至少为 20 个字符
  2. 字符串必须包含数字
  3. 数字前面必须有一些非数字字符
  4. 字符串结尾必须是格式为 DD/MM/YYYY HH:MM 的日期 - 是的,中间有一个空格,并且所有数字都必须存在。字符串中日期部分出现的数字不被视为规则2的可满足条件。
  5. 如果第一个数字之前有 $ 符号,则该字符串无效

我尝试过使用代码:

if (sCurrentLine.length() > 20) {   
    for (int i=0; i <= sCurrentLine.length() - 1; i++) {
        char character = sCurrentLine.charAt(i);
        int ascii = (int) character;
        if (((ascii >= 48) && (ascii <= 57)) && (i!=0)) {
            char character2 = sCurrentLine.charAt(i-1);
            int ascii2 = (int) character2;
            if(!((ascii2 >= 48) && (ascii2 <= 57))) {
                 // 
            }
        }
    }
}

但是看起来太复杂了。

是否有正则表达式方法可以解决这个问题?

最佳答案

试试这个:

if (sCurrentLine.matches("(?=.{20})[^$]*[^\\d$]\\d.*\\d{2}/\\d{2}/\\d{4} \\d{2}:\\d{2}")) 

使用断言有 20 个字符的前瞻检查长度(这当然意味着至少 20 个字符)。

您所需的数字逻辑可以表示为“以任意数量的非美元字符开头,一个非美元/数字字符,然后是一个数字”,这是正则表达式的第一部分。

最后一部分是日期格式。请注意,这仅检查正确位置是否有数字,而不是合法日期。

关于java - java中的正则表达式命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25508878/

相关文章:

mysql - MySQL中点字符的全词匹配

java - QueryDSL uniqueResult() 未定义

java - LinkedHashMap : insert List of Strings

Java 正则表达式转义撇号

python - 正则表达式删除字符串python中的单词

regex - awk 模式匹配语法 c&&!--c

javascript - 正则表达式替代项(所有匹配项)

java - 为什么它告诉我将时间转换为 int ?时间的格式是XX :XX, 这个变量应该是什么类型?

Java 对数 log(num, base)(已关闭)

regex - 如何将 IPv6 地址与 Perl 正则表达式匹配?