我需要捕获一个作为附加整数传递给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' –