我需要创建一个正则表达式来匹配所有出现的单个或两个数字(在数字的每一边都有一个空格)。我正在尝试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不匹配。 有谁知道我如何调整正则表达式,所以我可以将这两个数字包括在一起?
答案 0 :(得分:2)
您正在尝试匹配所需数字周围的前导和尾随空格。如果您只是使用其中一个空格(通过使用如下所示的lookahead来删除尾随空格),您将解决问题。
试试这个正则表达式:
\s\d{1,2}(?=\s)
<强>解释强>
\s
- 匹配空格\d{1,2}
- 匹配1位或2位数字(?=\s)
- 返回位置(0长度匹配),后跟空格。因此,它实际上并不匹配空间,但确保当前位置后跟空格答案 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);