0

我有一个字符串值,我想将其拆分并保留所有字符直到最后一个空格。

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

如何通过正则表达式做到这一点。

谢谢

4

5 回答 5

6

如果您lastIndexOf()改用:

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

更新:破解一个没有空格的单词:

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

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

"item1 item2 item3 *stopMarker".split(/ [^ ]*$/).pop();  // "item1 item2 item3"
于 2013-03-20T10:00:10.503 回答
1
var x = "item1 item2 item3 *stopMarker";
var ans = x.match(/(.*)\s[^\s]*/);

然后答案将存储在ans[1]

于 2013-03-20T10:00:09.327 回答
1

这应该得到你想要的:

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

将导致

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

然后你只需要""手动过滤掉。

于 2013-03-20T10:02:43.460 回答
1

如果你想拆分字符串并获得一个没有 *stopMarker 的数组,那么这就是你想要的:

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

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

于 2013-03-20T10:04:50.113 回答
1

使用“跟随”表达式:

"item1 item2 item3 *stopMarker".match( /^.*(?=\s)/i )
>> ["item1 item2 item3"]
于 2013-03-20T10:19:01.487 回答