【问题标题】:How to check a string in Java equals to a regex pattern?如何检查Java中的字符串是否等于正则表达式模式?
【发布时间】:2014-01-28 10:12:44
【问题描述】:

假设我有一个字符串,它可能是

1234

12 34

1 2 3 4 5

数字或空格的数量无关紧要,只要它接受一个只有数字的字符串,如果数字字符串中有空格,它仍然会接受它。我将如何为此编写正则表达式模式?

【问题讨论】:

  • 到目前为止你有什么?
  • 关于 OP 的快速问题(我应该在发布答案之前问这个问题) - 正则表达式是否应该匹配仅包含空格的字符串?还是必须至少有一位数字?
  • 字符串中至少要有一位数字

标签: java regex


【解决方案1】:

使用String#matches() 和正则表达式:

if (str.matches("[\\d\\s]+"))
    // string is acceptable

【讨论】:

    【解决方案2】:

    如果可以接受只有空格,那么你想要的正则表达式是"[\\d\\s]+"

    如果必须有一个或多个数字,那么您可以使用"\\s*(\\d\\s*)+"

    请注意,我将反斜杠加倍,假设您是用 Java 源代码编写的,而不是从其他文本源中读取它。第二种情况的实际正则表达式是\s*(\d\s*)+

    【讨论】:

    • 为什么"1 2 3 4 5".matches("(\\d\\s)+") 返回 false(括号与大括号)?换句话说,我以为我在说同样的话,我的正则表达式到底在说什么?
    • @tieTYT - 这是一个完全不同的问题 - 但简短的回答是你的正则表达式要求一个或多个重复一个数字然后一个空格。如果您在字符串的末尾添加一个空格,它将符合要求。
    • 哦,亲爱的,你说的很对,@ajb。我的意思是放弃方括号。我现在编辑它。感谢您的保存。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    相关资源
    最近更新 更多