2017-01-20 74 views
1

xnum-539 classname random-word xnum-hello hi-239正則表達式x後的所有內容直到空間

我需要挑選出所有在xnum-之後的東西,所以在這種情況下,需要選擇539hello

我曾嘗試多種東西,我必須要麼是最好的:

-(.*?)\s。 但是,當我只想要破折號後,包括破折號。 (前-539

rnum-(.*?)\s這需要整個事情。

對於這兩種解決方案,我不希望有手動切片。 道歉,如果這是一個重複,但我試圖與其他答案一起工作,以及我在正則表達式中很糟糕。

感謝

+0

是示例數據的程度,或者莫不是'XNUM-'項任意數量的?沒關係,Wiktor的的答案有你覆蓋:-) –

+0

事實上,很少有一個可以在這裏做,你就不能使用普通的'字符串#match'或因爲JS正則表達式引擎'正則表達式#exec'電話不支持回顧後。因此,在循環內切入或運行'RegExp#exec'。 –

+0

'xnum-'條目的未知數 – Apswak

回答

3

注意你的正則表達式實際上需要在比賽的最後一個空白(\s),因此,停止正則表達式引擎對你的價值在字符串的結尾相匹配。

你可以得到所有與/xnum-(\S+)/g正則表達式並獲得第1組比賽:

var s = "xnum-539 classname random xnum-hello"; 
 
var res=[],m; 
 
var re = /xnum-(\S+)/g; 
 
while ((m=re.exec(s)) !== null) { 
 
    res.push(m[1]); 
 
} 
 
console.log(res);

圖案的詳細資料

  • xnum- - 字面字符xnum-
  • 序列
  • (\S+) - ID爲1的捕獲組匹配一個或多個非空白符號。
+0

嗨,謝謝你的回答。有沒有辦法讓它在一個班輪中?我將把這個正則表達式放在一個'document.getElementsByClassName(REGEXHERE)'中,它本身就在一個循環中。謝謝 – Apswak

+0

不,我已經在問題的評論中解釋過了。我懷疑你將能夠傳遞一個正則表達式到getElementByClassName。 –

相關問題