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

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

问题描述:

我需要创建一个正则表达式以匹配所有出现的单个或两个数字(用数字每边的空格包围)。我与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 '

,但它不匹配8时,它在1.旁边0有人知道我如何调整正则表达式,所以我可以包括这两个数字在一起?

您正在尝试在比赛中都前端和后端周围的所需数量的空间。如果您刚刚离开其中一个空间(使用下图所示的lookahead删除拖尾空间),您将摆脱问题。

尝试此正则表达式:

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

说明:

  • \s - 白空间
  • \d{1,2}匹配 - 匹配的1个或2位数字
  • (?=\s) - 返回后跟空格的位置(0长度匹配)。因此,它实际上并没有相匹配的空间,但可以确保当前位置后面加一个空格

Click for Demo

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

单词边界将查找不包含字母,数字或下划线符号的数字。它会捕获由空格,字符串的开始和结束以及非单词字符(#12 @ - 将使他12)包裹的1或2位数字。

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);

+0

它也将匹配字符串'#12在'12' @'。 OP已经问过需要在数字 – Gurman

+0

@Guramn谢谢附近的空格 - 增加了一个关于这个的注释。 –