Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.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 JS-收集字符(:)之间的所有字母_Javascript_Regex - Fatal编程技术网

Javascript JS-收集字符(:)之间的所有字母

Javascript JS-收集字符(:)之间的所有字母,javascript,regex,Javascript,Regex,我希望根据节点中的注释将某些单词转换为图标 我需要转换字符串,如: 这是我最喜欢的商品:9044:和:456: 进入js数组,如: [ 9044, 456 ] 我在网上尝试了各种正则表达式方法,但都没有得到正确的输出 以前失败的尝试: ------------------ ------------------ ------------------ 您可以使用regex.exec var input='这是我最喜欢的项目:9044:和:456:和另一个匹配项:abc:'; 让正则表达式=/

我希望根据节点中的注释将某些单词转换为图标

我需要转换字符串,如:

这是我最喜欢的商品:9044:和:456:

进入js数组,如:

[ 9044, 456 ]
我在网上尝试了各种正则表达式方法,但都没有得到正确的输出

以前失败的尝试:

------------------

------------------

------------------

您可以使用
regex.exec

var input='这是我最喜欢的项目:9044:和:456:和另一个匹配项:abc:';
让正则表达式=/:(\w+):/g;
让结果=[];
让数;
while(number=regex.exec(输入)){
结果:推送(编号[1]);
}
控制台日志(结果);
正则表达式=/:\w+:/g;
结果=input.match(regex).map(num=>num.replace(/:/g');
控制台日志(结果);
//如果你想铸造数字
结果=输入.match(regex).map(num=>{
num=num.replace(/:/g',);
返回编号.isNaN(+num)?num:+num;
});

控制台日志(结果)中间的字符总是数字吗?不幸的是,它们可以是数字,也可以是单词。最后一个正则表达式看起来不错。您只需将其设置为全局
g
,或者使用带有循环的
.exec()
,或者利用
。使用回调函数替换()
。。实际上,只需将regex设置为全局,就足以使您的上一个解决方案正常工作<代码>/:([^::]+):/g
除了需要映射结果以修剪冒号之外
comment.match(regex).map(s=>+s.slice(1,-1))
如果它可以是数字或单词,那么你的结果应该是字符串而不是数字。OP说冒号之间并不总是数字。我会使用非贪婪的通配符,例如
/:(.+?):/g
是的。可能使用:
/:(.+?):/g
然后可能使用单独的正则表达式/算法来检测和转换数字
var comment = 'This is my fav item :9044: and :456:';
comment.substring(comment.lastIndexOf(":")+1,comment.lastIndexOf(":"));

// ':'
var comment = 'This is my fav item :9044: and :456:';
comment.match(":(.*):");

// [ ':9044: and :456:', '9044: and :456' ]
var comment = 'This is my fav item :9044: and :456:';
comment.match(/:([^:]+):/);

// [ ':9044:', '9044' ]