匹配任何数字的正则表达式是什么,它们之间有空格?

时间:2015-02-06 14:32:21

标签: regex

我搜索并尝试了所有可能的正则表达式解决方案,但我找不到任何答案。我正在寻找一个正则表达式,它匹配数字与它们之间的任何空格。

例如,以下句子:

  

12 Voorbeeld3 4Voorbeeld5 6 test 777

     

示例1 2 33 4test

因此正则表达式在第一句中仅匹配126777 并且在第二句中只有233。所以每个数字都在空格之间。

我试过正则表达式来寻找空白。例如,(?<!\s[\d+])但它只匹配单个数字,而不是多个数字。

有什么建议吗?

提前致谢。

4 个答案:

答案 0 :(得分:4)

您正在寻找的RegExp如下:

\b(\d+)\b

以上RegExp将匹配两个word boundaries之间的任意数字,因此它将匹配:

  • "123 "
  • " 123"
  • " 123 "

使用g修饰符匹配所有匹配项(所有数字)。您可以找到一个有效的示例HERE

JavaScript示例:

var text = "12 Voorbeeld3 4Voorbeeld5 6 test 777",
    exp = /\b(\d+)\b/g,
    match;

while (match = exp.exec(text)) {
    console.log(match[0]);
}

// Result:

> 12
> 6
> 777

答案 1 :(得分:2)

可以使用单词边界匹配由空格(或在字符串的开头/结尾)包围的数字组:

\b\d+\b

答案 2 :(得分:1)

您可以使用外观:

(?<=\s)\d+(?=\s)

或者,如果没有可用的外观,则使用捕获的组:

\s(\d+)\s

并使用捕获的组#1。

答案 3 :(得分:1)

您可以使用类似的内容:\b(\d+)\b。这将检查您是否有一个或多个由空格包围的数字。可以看到正则表达式的样本here