const regex = /[1-9a-zA-Z]{3}-[1-9a-zA-Z]{3}-[1-9a-zA-Z]{3}/gm;
let m;
while ((m = regex.exec(tweet.text)) !== null) {
let newClass = tweet.text.replace(/[^1-9a-zA-Z]{3}-[^1-9a-zA-Z]{3}-[^1-9a-zA-Z]{3}/g, '');
console.log(`Found match: ${newClass}`);
};
当tweet.text = "123.qwe.456 test"
时,我仍然得到相同的输出,但我想删除任何不符合模式的内容
/[1-9a-zA-Z]{3}-[1-9a-zA-Z]{3}-[1-9a-zA-Z]{3}/
有什么想法吗?
您可以使用捕获组来提取字符串中匹配的内容,然后用该值替换原始变量。类似的东西
const regex = /([1-9a-zA-Z]{3}-[1-9a-zA-Z]{3}-[1-9a-zA-Z]{3})/
let match = tweet.text.match(regex)
tweet.text = match[1]
您可以获得匹配而不是替换
b[1-9a-zA-Z]{3}([-.])[1-9a-zA-Z]{3}1[1-9a-zA-Z]{3}b
解释
b
单词边界[1-9a-zA-Z]{3}
匹配3次列出的任何一个(注意1-9与0不匹配(- 组1中的
([-.])
捕获-
或.
[1-9a-zA-Z]{3}
匹配3次列出的任何一次1
返回对组1的引用,与组1中捕获的相同匹配[1-9a-zA-Z]{3}
匹配3次列出的任何一次b
A字边界
Regex演示
const regex = /[1-9a-zA-Z]{3}-[1-9a-zA-Z]{3}-[1-9a-zA-Z]{3}/gm;
let m;
while ((m = regex.exec(tweet.text)) !== null) {
console.log(`Found match: ${m[0]}`);
找到解决方案