2013-03-20 22 views
0

我有一个字符串值,我想分割并保留所有字符到最后一个空格。正则表达式获取值到最后一个空格

e.g var x="item1 item2 item3 *stopMarker" 
var y=someRegOpr(x); and y will contain only "item1 item2 item3" 

如何通过正则表达式来实现。

感谢

+0

为什么正则表达式................ – Jai 2013-03-20 10:15:38

回答

6

如果你所使用lastIndexOf()代替:

var x = "item1 item2 item3 *stopMarker"; 
x.substring(0, x.lastIndexOf(" ")); // "item1 item2 item3" 

UPDATE:哈克单个字,而不空格:

var x = "item1"; 
x.substring(0, Math.max(0, x.lastIndexOf(" ")) || Infinity); // "item1" 

UPDATE2:都是一样的使用正则表达式:

"item1 item2 item3 *stopMarker".split(/ [^ ]*$/).pop(); // "item1 item2 item3" 
+2

+1看不到任何需要使用正则表达式,保持简单。 – 2013-03-20 10:01:06

+0

谢谢@ VisioN.Yes我们也可以这样做.. – mns 2013-03-20 10:11:52

+0

@mns它比使用正则表达式快很多倍。 – VisioN 2013-03-20 10:18:48

1
var x = "item1 item2 item3 *stopMarker"; 
var ans = x.match(/(.*)\s[^\s]*/); 

,然后回答将被存储在ans[1]

+0

关闭,但为什么不干脆'/ [^ \ s]的? + $ /'? – RobG 2013-03-20 11:00:58

1

这应该得到你想要的东西:

'item1 item2 item3 *stopMarker'.split(/(.*)\s.*$/) 

将导致

["", "item1 item2 item3", ""] 

然后,您只需手动过滤出""

1

如果要分割字符串并获得阵列无* stopMarker,那么这就是你想要的东西:

var x="item1 item2 item3 *stopMarker"; 
var y = x.split(" "); 
y=y.splice(0, y.length-1); 

如果没有,只是用.lastIndexOf解决方案。

1

使用 “其次是” 表达:

"item1 item2 item3 *stopMarker".match(/^.*(?=\s)/i) 
>> ["item1 item2 item3"] 
相关问题