2017-11-25 144 views
0

我需要創建一個正則表達式以匹配所有出現的單個或兩個數字(用數字每邊的空格包圍)。我與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有人知道我如何調整正則表達式,所以我可以包括這兩個數字在一起?

回答

2

您正在嘗試在比賽中都前端和後端周圍的所需數量的空間。如果您剛剛離開其中一個空間(使用下圖所示的lookahead刪除拖尾空間),您將擺脫問題。

嘗試此正則表達式:

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

說明:

  • \s - 白空間
  • \d{1,2}匹配 - 匹配的1個或2位數字
  • (?=\s) - 返回後跟空格的位置(0長度匹配)。因此,它實際上並沒有相匹配的空間,但可以確保當前位置後面加一個空格

Click for Demo

1

您可以使用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謝謝附近的空格 - 增加了一個關於這個的註釋。 –