Javascript js从参数中删除不符合模式的部分

Javascript js从参数中删除不符合模式的部分,javascript,regex,replace,Javascript,Regex,Replace,当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}/gm; let m; while ((m = regex.exec(tweet.

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}/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}`);
};

代替替换,你可以得到匹配

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}
    匹配列出的任何一项的3倍(注意1-9不匹配0)
  • ([-.])
    组1中捕获
    -
  • [1-9a-zA-Z]{3}
    将列出的任何一项匹配3次
  • \1
    返回对组1的引用,与组1中捕获的内容匹配
  • [1-9a-zA-Z]{3}
    将列出的任何一项匹配3次
  • \b
    单词边界


找到了解决方案

我们可以看到您编写的正则表达式,但您试图排除的“模式”是什么?也就是说,您将获得
“123.qwe.456测试”
,您希望排除其中的哪一部分?所需的输出是什么?字符串,因此输入是可变的。这意味着“测试”需要用零替换。我想用零替换匹配字符串以外的所有内容。
\b[1-9a-zA-Z]{3}([-.])[1-9a-zA-Z]{3}\1[1-9a-zA-Z]{3}\b
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]}`);