【问题标题】:How do implement this regex function in java?如何在java中实现这个正则表达式函数?
【发布时间】:2016-08-22 13:55:27
【问题描述】:

字符串最多应包含 15 个字符,仅由数字组成,并且字符串中的任何位置都应至少有两个单字符大小的空格。

很容易找到仅数字的解决方案,我在寻找添加空格的条件时遇到了困难。

我尝试搜索最常见的正则表达式问题,但找不到类似的内容。

编辑:

附加条件

  • 空格不能相邻
  • 不得将它们放在第一个或最后一个字符中

【问题讨论】:

  • 如果必须包含空格,怎么能“仅由数字组成”?
  • 对不起,我的意思只是数字和空格。但应该至少存在两个单字符大小的空格
  • “两个单字符大小的空格”是指两个连续的空格无效?
  • 真正的怀疑论者:例如"12 34543234 123"
  • A 询问连续空格。 12<space><space>345 呢?

标签: java regex string


【解决方案1】:

我想根据您的要求,这样的事情会起作用:

\d+(\s\d+){2,}

但您需要单独检查长度(例如input.length() <= 15)。

这句话说:

  • 开头的数字。
  • 然后是一个空格,后跟数字 - 至少两个这样的组合

这样可以确保字符串中的所有空格都不在空格之前或之后,并且至少有两个空格。它还可以防止空格在开头或结尾,并且还允许两个以上的空格。

【讨论】:

    【解决方案2】:

    你可以使用这个正则表达式:[0-9\s]{2,15}

    然后在您的 Java 代码中检查是否存在由空格分隔的三个部分:

    String input =...;
    if (input.matches("[0-9\\s]{2,15}") && (input.split(" ").length == 3) ) {
         System.out.println("valid input");     
    }
    

    已编辑:前导和结尾空格,不允许连接空格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-08
      • 1970-01-01
      • 2013-07-15
      • 1970-01-01
      • 1970-01-01
      • 2020-11-25
      相关资源
      最近更新 更多