正则表达式匹配所有单数或双数数字
问题描述:
我需要创建一个正则表达式以匹配所有出现的单个或两个数字(用数字每边的空格包围)。我与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长度匹配)。因此,它实际上并没有相匹配的空间,但可以确保当前位置后面加一个空格
答
您可以使用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);
它也将匹配字符串'#12在'12' @'。 OP已经问过需要在数字 – Gurman
@Guramn谢谢附近的空格 - 增加了一个关于这个的注释。 –