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