Javascript 将字符串拆分为字母数字和其他
如何将字符串拆分为字母数字和非字母数字字符串组Javascript 将字符串拆分为字母数字和其他,javascript,regex,Javascript,Regex,如何将字符串拆分为字母数字和非字母数字字符串组 var str = "abcd !!hh8kK*( abcd efgh" //some split logic that can give me ['abcd', ' !!', 'hh8kK', '*( ', 'abcd', ' ', 'efgh'] 尝试: var str=“abcd!!hh8kK*(abcd-efgh”; var result=str.split(/(\w+/); result=result.slice(1,result.l
var str = "abcd !!hh8kK*( abcd efgh"
//some split logic that can give me
['abcd', ' !!', 'hh8kK', '*( ', 'abcd', ' ', 'efgh']
尝试:
var str=“abcd!!hh8kK*(abcd-efgh”;
var result=str.split(/(\w+/);
result=result.slice(1,result.length-1);//删除尾随的空字符串
document.body.innerHTML=JSON.stringify(结果);
您可以使用以下正则表达式:
/([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+
,因为它同时匹配下划线(\u
)和连字符(-
)。这应该可以使用来自不同字母表的其他Unicode字符
var result = "abcd !!hh8kK*( abcd efgh".split(/\b/g);
在上面的代码中,我们使用正则表达式在单词边界上拆分字符串
示例如下:
var input=document.getElementById(“输入”);
var output=document.getElementById(“输出”);
var结果=输入值分割(/\b/g);
结果.forEach(函数(项、索引){
output.innerHTML+=“索引“+index+”处的匹配项:`+item+“`
\n”;
});
JSON.stringify本机可用吗?@user961954:@JohnSlegers甚至在IE兼容模式下?@user961954:现在是2016年。你应该可以忽略IE8以下的IE版本。@JohnSlegers我刚刚意识到JSON.stringify只用于演示目的。和平!你能解释一下你的意思吗“我没有在这里使用\w+,因为它同时匹配下划线(u)和连字符(-)。@user961954使用正则表达式/\w+/
。这将所有字母数字字符以及下划线和连字符放在同一组中(“a-b\u c!!”
将变成[“a-b\u c”,“!!”
,我认为这不是您想要的).你说得对!我不想这样,所以那个答案对我来说不起作用,但我正在评估Rolice的答案分割(/\b/g)中的一个新答案。我测试并分割(/\b/g)工作起来很有魅力,所以我会继续。也谢谢你的回答。有没有可能在单词边界范围内添加单引号,这将帮助我抓住不应该的单词。