正则表达式匹配数字和空格

时间:2012-08-05 19:56:16

标签: java regex

我正在尝试匹配包含1到3位数的字符串

示例:

1
 2
123
  3

这是我试过的,

[\s]?[0-9]{1,3}[\s]?

这是匹配的,

123 ->a space after 123

4 个答案:

答案 0 :(得分:2)

你的问题不清楚,但似乎你正在寻找一个字符串

  • 正好是3个字符
  • 仅包含数字或空格
  • 至少包含一位数字

在这种情况下,正则表达式为^(?=.*\d)[\d\s]{3}$。作为Java字符串:"^(?=.*\\d)[\\d\\s]{3}$"

<强>解释

^         # Start of string
(?=.*\d)  # Assert that there is at least one digit in the string
[\d\s]{3} # Match 3 digits or whitespace characters
$         # End of string

答案 1 :(得分:1)

这应该对你有用

^\\d{1,3}$

解释

"^" +     // Assert position at the beginning of the string
"\\d" +    // Match a single digit 0..9
"{1,3}" +   // Between one and 3 times, as many times as possible, giving back as needed (greedy)
"$"       // Assert position at the end of the string (or before the line break at the end of the string, if any)

答案 2 :(得分:0)

你能在你的正则表达式引擎中使用单词边界元字符吗?试试这个:\b\d{1,3}\b

答案 3 :(得分:0)

最多匹配3位数的模式,包含任意数量的前导空格和没有尾随空格,将是:^\s*\d{1,3}$

这将匹配:

1
 2
123
  3

但是不匹配“123”,最后有一个空格。