我将如何编写使用正则表达式来拆分字符串,如下所示:
"foo bar, foobar (bar)" => ["foo", "bar", ",", "foobar", "(", "bar", ")"]
即在空格上拆分+每个特殊字符应分别包含在结果数组中
我将如何编写使用正则表达式来拆分字符串,如下所示:
"foo bar, foobar (bar)" => ["foo", "bar", ",", "foobar", "(", "bar", ")"]
即在空格上拆分+每个特殊字符应分别包含在结果数组中
而不是分裂,我会做相反的事情;找到 的所有匹配项\w+|[^\w\s]
。
我可能会做这样的事情
var foo = [];
"foo bar, foobar (bar)".split(/(\W)/).forEach(function(elem) {
if (!/^\s*$/.test(elem)) {
foo.push(elem);
}
});
// foo = (object) ['foo', 'bar', ',', 'foobar', '(', 'bar', ')']
新数组“foo”将包含您的所有值。
您可以拆分以下正则表达式:
"\s|(?=\W)"
好吧,这个会给你以下输出:
["foo", "bar", ",", "foobar", "", "(bar", ")"]
因为,Javascript不支持后视,所以这里不可能拆分(bar
成两个单独的元素。
更好的方法是match而不是split。您想要的只是获取与以下正则表达式模式匹配的所有子字符串:
"\w+|[^\w\s]"
要_
用作特殊字符,您可以使用:
"[^_\W]+|[^a-zA-Z0-9\s]"
我想出了(\w+|[,()])
每个http://rubular.com/r/BGAFLOmkgP