2012-10-24 38 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] : '';