【发布时间】:2015-09-21 09:06:40
【问题描述】:
我的正则表达式 = /\s+/
我想实现所有数字都用空格分隔。它有效,但它也捕获了最后一个空格(因为我正在拆分它,最后一个空格作为“”数组元素)。
“123 123 213” - 工作正常。
“21 12 21 421” - 捕获最后一个空格。
我该如何解决这个问题?
【问题讨论】:
-
你在这里使用的语言
标签: javascript regex
我的正则表达式 = /\s+/
我想实现所有数字都用空格分隔。它有效,但它也捕获了最后一个空格(因为我正在拆分它,最后一个空格作为“”数组元素)。
“123 123 213” - 工作正常。
“21 12 21 421” - 捕获最后一个空格。
我该如何解决这个问题?
【问题讨论】:
标签: javascript regex
在运行正则表达式并完成之前修剪字符串。
【讨论】:
【讨论】:
"21 12 21 421 ".split(/\b\s+\b/)
直接在字符串上使用这个正则表达式:\s+(?=\S),不需要修剪。 (demo)
这匹配任何后跟至少一个非空格字符的空格。
【讨论】:
剪掉任何前导和尾随空格,然后拆分:
var numArr = "21 12 21 421 ".replace(/^\s+|\s+$/g, "").split(/ +/);
就是这样。
根据您的环境,您可以只使用内置的 trim 方法。
var numArr = "21 12 21 421 ".trim().split(" ");
如果你没有 trim,但又想用,可以试试Mozilla的这个 polyfill:
if (!String.prototype.trim) {
String.prototype.trim = function () {
return this.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, '');
};
}
【讨论】: