我需要捕獲一個作爲附加整數傳遞給CSS類的數字。我的正則表達式非常弱,我想要做的很簡單。我認爲「負字邊界」 \B
是我想要的國旗,但我想我錯了正則表達式以特定的開始捕捉整個單詞
string = "foo bar-15";
var theInteger = string.replace('/bar\-\B', ''); // expected result = 15
我需要捕獲一個作爲附加整數傳遞給CSS類的數字。我的正則表達式非常弱,我想要做的很簡單。我認爲「負字邊界」 \B
是我想要的國旗,但我想我錯了正則表達式以特定的開始捕捉整個單詞
string = "foo bar-15";
var theInteger = string.replace('/bar\-\B', ''); // expected result = 15
使用捕獲組所列出here:
然後,你可以只需要做一個if (theInteger)
無論你需要使用它
string = "foo bar-15";
var theInteger = /bar-(\d+)/.exec(string)[1]
theInteger // = 15
如果你只是想在年底的數字(一種反向parseInt函數的),爲什麼不:
var num = 'foo bar-15'.replace(/.*\D+(\d+)$/,'$1');
或
var m = 'foo bar-15'.match(/\d+$/);
var num = m? m[0] : '';
這裏的問題是,如果沒有結尾的數字,'match'返回'null'並嘗試訪問'null [1]'會引發錯誤。更好地先調用'match',然後在繼續之前檢查結果(請參閱我的答案)。 – RobG
@RobG - 你說得對。更新了處理這種情況的代碼。 – JamesSwift
更漂亮的是theInteger = str.match(正則表達式)? RegExp。$ 1:null' –