2016-04-01 139 views

回答

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"; 
 
});
<input id="input" type="text" value="abcd !!hh8kK*(abcd efgh"> 
 
<p id="output"></p>

+0

是否有可能在单词边界范围内添加单引号,这会帮助我理解不应该的单词。 – user961954

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);

+0

是JSON.stringify提供原生? – user961954

+0

@ user961954是 –

+0

@ user961954:[** JSON.stringify适用于所有现代浏览器和IE8 + **](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/ JSON/stringify) –

3

您可以使用下面的正则表达式:

/([A-Za-z0-9]+|[^A-Za-z0-9]+)/g 

Regexper Visualisation

而且使用JavaScript的match方法应用它:

"abcd !!hh8kK*(abcd efgh".match(/([A-Za-z0-9]+|[^A-Za-z0-9]+)/g) 
-> ["abcd", " !!", "hh8kK", "*(", "abcd", " ", "efgh"] 

这符合一个或多个字母数字字符或多个非字母数字字符的之一。

我在这里没有使用\w+,因为它匹配下划线(_)和连字符(-)。

+0

你能解释一下你的意思吗?“我没有用过\ w +,因为它与下划线(_)和连字符( - )匹配。” – user961954

+0

@ user961954 [jcubic's answer](http://stackoverflow.com/a/36351232/1317805)使用正则表达式'/ \ w + /'。这将所有字母数字字符连同下划线和连字符放在同一个组中('“a-b_c !!”'将变成'[“a-b_c”,“!!”]'我认为这不是你所要的后)。 –

+0

你是对的!我不想那样,所以这个答案对我不起作用,但我正在评估Rolice的答案split(/ \ b/g)的一个新答案。 – user961954

相关问题