如何将字符串拆分为字母数字和非字母数字字符串组?
var str = "abcd !!hh8kK*( abcd efgh"
//some split logic that can give me
['abcd', ' !!', 'hh8kK', '*( ', 'abcd', ' ', 'efgh']
答案 0 :(得分:3)
尝试:
var str = "abcd !!hh8kK*( abcd efgh";
var result = str.split(/(\w+)/);
result = result.slice(1, result.length-1); // remove trailing empty strings
document.body.innerHTML = JSON.stringify(result);

答案 1 :(得分:3)
您可以使用以下正则表达式:
/([A-Za-z0-9]+|[^A-Za-z0-9]+)/g
并使用JavaScript match
方法应用它:
"abcd !!hh8kK*( abcd efgh".match(/([A-Za-z0-9]+|[^A-Za-z0-9]+)/g)
-> ["abcd", " !!", "hh8kK", "*( ", "abcd", " ", "efgh"]
这匹配一个或多个字母数字字符或一个或多个非字母数字字符。
我在这里没有使用\w+
,因为它匹配下划线(_
)和连字符(-
)。
答案 2 :(得分:2)
即使使用不同字母表中的其他Unicode字符,这也应该可以使用。
var result = "abcd !!hh8kK*( abcd efgh".split(/\b/g);
在上面的代码中,我们在字边界\b
- Word Boundaries上拆分了一个带有正则表达式的字符串。
以下示例:
var input = document.getElementById("input");
var output = document.getElementById("output");
var result = input.value.split(/\b/g);
result.forEach(function(item, index) {
output.innerHTML += "Matched item at index " + index + ": <b>`" + item + "`</b><br> \n";
});
&#13;
<input id="input" type="text" value="abcd !!hh8kK*( abcd efgh">
<p id="output"></p>
&#13;