regex:在每个“:”之后提取字符串

rur96b6h  于 2021-09-23  发布在  Java
关注(0)|答案(4)|浏览(446)

关闭。这个问题需要更加关注。它目前不接受答案。
**想改进这个问题吗?**编辑这篇文章,更新这个问题,使它只关注一个问题。

昨天关门了。
改进这个问题
我有这样的字符串:

"abc:12:toto:tata:titi"

我想把每根绳子 ":" 用一个 split() ,就是这样 "toto" , "tata""titi" 在这种情况下。

esbemjvw

esbemjvw1#

我只想把每根绳子 : 如果我们使用 split() 与…结合 filter() 我们可以过滤掉任何数字部分。
为了删除第一个,我添加了一个 splice(1) ```
const input = 'abc:12:toto:tata:titi';
const res = input.split(':').slice(1).filter(n => isNaN(n) && isNaN(parseFloat(n)));

console.log(res);

[
"toto",
"tata",
"titi"
]

6jygbczu

6jygbczu2#

假设冒号分隔的值始终是纯数字或纯字母单词:

var input = "abc:12:toto:tata:titi";
var matches = input.replace(/:\d+/g, "").split(":");
matches.shift();
console.log(matches);

上的正则表达式替换 :\d+ 删除数字元素。然后我们在冒号上拆分,并移开第一个元素,它不能是匹配的,因为它前面没有冒号。

drkbr07n

drkbr07n3#

也许你想要这样的东西?

const str = 'abc:12:toto:tata:titi';
const regex = /\w{4,}/g;

console.log(str.match(regex))
wooyq4lh

wooyq4lh4#

你可以简单地使用 String.prototype.split() :

const str = 'abc:12:toto:tata:titi';

const words = str.split(':');
console.log(words);

输出: Array(5) [ "", "12", "toto", "tata", "titi" ] 正则表达式是不必要的,因为您的分隔符是常量,变化很简单。
如果您确实只想获取紧接冒号(“:”)之后的alpha字符串,请使用:

const str = 'abc:12:toto:tata:titi';

const filteredWords = words.slice(1).filter(word => !isNaN(parseInt(word)));
console.log(filteredWords)

输出: Array(5) [ "toto", "tata", "titi" ]

相关问题