我的RegEx = /\s+/
我想要完成所有数字都用空格分隔。它可以工作,但它也捕获了最后一个空间(因为我将它拆分,最后一个空格作为“”数组元素)。
“123 123 213” - 工作正常。
“21 12 21 421” - 抓住最后一个空间。
我该如何解决这个问题?
答案 0 :(得分:4)
在运行正则表达式和完成之前修剪字符串。
答案 1 :(得分:1)
答案 2 :(得分:1)
修剪任何前导和尾随空格,然后拆分:
var numArr = "21 12 21 421 ".replace(/^\s+|\s+$/g, "").split(/ +/);
那就是它。
根据您的环境,您可以使用内置修剪方法。
var numArr = "21 12 21 421 ".trim().split(" ");
如果您没有修剪,但想要使用它,可以尝试Mozilla中的此填充:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
答案 3 :(得分:1)
直接在字符串上使用此正则表达式:\s+(?=\S)
,无需修剪。 (demo)
这匹配任何后跟至少一个不是空格的字符的空格。