我给了一个可怕的定界字符串。每个id都被左侧的空格('')和右侧的回车('\ r')包围。我想拆分这个字符串并在javascript中找回所有ID。
例如:
' hey\r my\r name\r is\r'
应该返回['hey', 'my', 'name', 'is']
到目前为止,我试过了:
str.split(/ (.+)\r/g)
str.split(/(?:\s)(.+)(?:\r)/)
str.split(/\s(.+?=\r)/)
几乎无济于事。我与str.split(/(?:\s)(.+)(?:\r)/)
最接近,但它给了我:
['', 'hey', '', 'my', '', 'name', '', 'is', '']
。
什么匹配空字符串?
匹配这个的正则表达式是什么?
编辑:
Id可以包含任何其他空格字符,因此这是一个有效的id:123 \ t234 \ n。和 'abc \ r 123 \ n456 \ t \ r'应返回['abc','123 \ n456 \ t']
谢谢!
答案 0 :(得分:4)
怎么样:
var parts = str.replace(/^\s+|\s+$/g, '').split(/\s+/)
也就是说,删除前导和尾随空格字符,然后只拆分内部空格字符(并全部使用它们)。
> var str = ' hey\r my\r name\r is\r'
undefined
> str.replace(/^\s+|\s+$/g, '').split(/\s+/)
["hey", "my", "name", "is"]
如果你只想分开\r
,那么:
.split(/\r +/)
您可以将修剪更改为:
.replace(/^[\r ]+|[\r ]+$/g, '')
答案 1 :(得分:2)
也许我无法理解问题的难度,但为什么你不能简单地使用:
str.replace(/^[ ]?|[ ]?$/, "").split("\r ");
它似乎适用于所有示例。
答案 2 :(得分:0)
\s*(\S*)\s*\r
您的比赛将在第1组
在javascript中,您可以迭代所有匹配并像这样捕获
var myregexp = /\s*(\S*)\s*\r/g;
var match = myregexp.exec(subject);
while (match != null) {
for (var i = 0; i < match.length; i++) {
// matched text: match[i]
}
match = myregexp.exec(subject);
}