正则表达式匹配所有单个或双位数字

时间:2017-11-25 16:03:18

标签: javascript regex string

我需要创建一个正则表达式来匹配所有出现的单个或两个数字(在数字的每一边都有一个空格)。我正在尝试this regex

\s\d{1,2}\s

我在这个字符串上运行它:

charge to at10d to and you 12 sdf 90 fdsf fsdf32 frere89 32fdsfdsf ball for 1 8 toyota

匹配:

' 12 ', ' 90 ', ' 1 '

但是它与1旁边的8不匹配。 有谁知道我如何调整正则表达式,所以我可以将这两个数字包括在一起?

2 个答案:

答案 0 :(得分:2)

您正在尝试匹配所需数字周围的前导和尾随空格。如果您只是使用其中一个空格(通过使用如下所示的lookahead来删除尾随空格),您将解决问题。

试试这个正则表达式:

\s\d{1,2}(?=\s)

<强>解释

  • \s - 匹配空格
  • \d{1,2} - 匹配1位或2位数字
  • (?=\s) - 返回位置(0长度匹配),后跟空格。因此,它实际上并不匹配空间,但确保当前位置后跟空格

Click for Demo

答案 1 :(得分:1)

您可以使用word boundry \b表达式。

单词边界将找到未被字母,数字或下划线符号包裹的数字。它将捕获由空格,字符串的开头和结尾以及非单词字符包裹的1或2位数字(#12 @ - 将得到12)。

var str = "51 charge to at10d to and you 12 sdf 90 fdsf fsdf32 frere89 32fdsfdsf ball for 1 8 toyota 12";

var result = str.match(/\b\d{1,2}\b/g);

console.log(result);