Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将字符串拆分为字母数字和其他_Javascript_Regex - Fatal编程技术网

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)工作起来很有魅力,所以我会继续。也谢谢你的回答。有没有可能在单词边界范围内添加单引号,这将帮助我抓住不应该的单词。