2012-10-24 55 views
0

我需要捕獲一個作爲附加整數傳遞給CSS類的數字。我的正則表達式非常弱,我想要做的很簡單。我認爲「負字邊界」 \B是我想要的國旗,但我想我錯了正則表達式以特定的開始捕捉整個單詞

string = "foo bar-15"; 
var theInteger = string.replace('/bar\-\B', ''); // expected result = 15 

回答

3

使用捕獲組所列出here

​​

然後,你可以只需要做一個if (theInteger)無論你需要使用它

+0

這裏的問題是,如果沒有結尾的數字,'match'返回'null'並嘗試訪問'nul​​l [1]'會引發錯誤。更好地先調用'match',然後在繼續之前檢查結果(請參閱我的答案)。 – RobG

+0

@RobG - 你說得對。更新了處理這種情況的代碼。 – JamesSwift

+0

更漂亮的是theInteger = str.match(正則表達式)? RegExp。$ 1:null' –

1

試試這個:

var theInteger = string.match(/\d+/g).join('') 
+0

羅 - 我想對其他面向未來基於整數的類被引入到CSS中。匹配「bar-」字符並刪除它們以獲取整數是必要的。 – Brian

+0

@Brian這段代碼的問題是什麼? http://jsfiddle.net/bttyp/ – undefined

+0

好的 - 我站好了。 – Brian

1
string = "foo bar-15"; 
var theInteger = /bar-(\d+)/.exec(string)[1] 
theInteger // = 15 
1

如果你只是想在年底的數字(一種反向parseInt函數的),爲什麼不:

var num = 'foo bar-15'.replace(/.*\D+(\d+)$/,'$1'); 

var m = 'foo bar-15'.match(/\d+$/); 
var num = m? m[0] : '';