Node.js 如何替换nodejs中regex中的几个值?
我有一个句子,在{#val#}的位置,可以有5以内的任何值。而且 我需要删除特殊字符,除了下面给出的句子中的少数字符。我试着做下面的事情Node.js 如何替换nodejs中regex中的几个值?,node.js,regex,Node.js,Regex,我有一个句子,在{#val#}的位置,可以有5以内的任何值。而且 我需要删除特殊字符,除了下面给出的句子中的少数字符。我试着做下面的事情 var separators = ["#val#", "#VAL#", "#vaL#", "#vAl#", "#Val#"]; let sentence = "Hi {#VAL#}, Thank you {#val#}{#val#} for &
var separators = ["#val#", "#VAL#", "#vaL#", "#vAl#", "#Val#"];
let sentence = "Hi {#VAL#}, Thank you {#val#}{#val#} for &visting us!";
separators.forEach((str) => {
regexString = regexString.replace(new RegExp(`{${str}}`, "g"), ".{0,5}"); //Replacing val with .{0,5}
});
我试图使用三元运算符,以便只替换除{0,5}之外的特殊字符,但这似乎不起作用
regexString = regexString.replace(/([&\/\\,+()$~%'":?<>_;||`~!^@=+{}\[\]\-])/g,(x,z) => {
x == ".{0,5}" || x == "\s" ? "" :".{0,5}"
})
regexString=regexString.replace(/([&\/\,+()$~%'”:?| | `~!^@=+{}\[\]\-])/g,(x,z)=>{
x=“{0,5}”| | x=”\s“:“{0,5}”
})
请在这方面帮助我。如果您想删除特殊字符,可以使用您只需要的[!-\/:-@[-
{-~]`模式(请参阅)匹配
var分隔符\u regex=/{{val}}{124;([!-\/:-@[-`{-~])/gi;
让我们说一句话:“嗨{{瓦尔},谢谢你{{瓦尔}{{瓦尔}来看我们!”;
句子=句子。替换(分隔符_regex,(x,y)=>y?”:“{0,5}”);
console.log(句子);
要删除的特殊字符可以与您只需要的[!-\/:-@[-
{-~]`模式匹配(请参阅)
var分隔符\u regex=/{{val}}{124;([!-\/:-@[-`{-~])/gi;
让我们说一句话:“嗨{{瓦尔},谢谢你{{瓦尔}{{瓦尔}来看我们!”;
句子=句子。替换(分隔符_regex,(x,y)=>y?”:“{0,5}”);
console.log(句子);
据我理解:
const separators = ["#val#", "#VAL#", "#vaL#", "#vAl#", "#Val#"];
const sentence = "Hi {#VAL#}, Thank you {#val#}{#val#} for &visting us!";
const replace = (string) => {
const staticRegex = new RegExp(/[^a-zA-Z {.}]+(?![^{]*})/, "gi")
separators.forEach((str) => {
const dynamicRegex = new RegExp(`{${str}}`, "gi");
string = string.replace(dynamicRegex, ".{0,5}");
});
return string.replace(staticRegex, "");
};
console.log(replace(sentence)); /* output :
Hi .{0,5} Thank you .{0,5}.{0,5} for visting us
*/
添加了O.Jones建议的i
(不区分大小写)修饰符。也许不是最“大O效率”的方式,但我希望它能回答你的问题 /e:在你的评论之后编辑
- 我们保留了通过分隔符数组进行迭代的想法:这是
dynamicreex
- 一旦我们完成了迭代,我们就使用第二个。这是一个稍微编辑过的版本
- 据我所知:
const separators = ["#val#", "#VAL#", "#vaL#", "#vAl#", "#Val#"];
const sentence = "Hi {#VAL#}, Thank you {#val#}{#val#} for &visting us!";
const replace = (string) => {
const staticRegex = new RegExp(/[^a-zA-Z {.}]+(?![^{]*})/, "gi")
separators.forEach((str) => {
const dynamicRegex = new RegExp(`{${str}}`, "gi");
string = string.replace(dynamicRegex, ".{0,5}");
});
return string.replace(staticRegex, "");
};
console.log(replace(sentence)); /* output :
Hi .{0,5} Thank you .{0,5}.{0,5} for visting us
*/
添加了O.Jones建议的i
(不区分大小写)修饰符。也许不是最“大O效率”的方式,但我希望它能回答你的问题 /e:在你的评论之后编辑
- 我们保留了通过分隔符数组进行迭代的想法:这是
dynamicreex
- 一旦我们完成了迭代,我们就使用第二个。这是一个稍微编辑过的版本
i
修饰符使匹配大小写独立。在我看来,这可能会简化您的问题。正则表达式上的i
修饰符使匹配大小写独立。在我看来,这可能会简化您的问题。感谢您的输入,但我想删除像{,}这样的特殊字符输出应该是嗨。{0},5},{0},{5}。{0},5}。请帮助我解决这个问题,但是如果我们包括{在句子中间某个地方,它是不被替换的。例如,const句子=“H{{ValVal}}},谢谢Y{{V.Val}}{{Val}}} { V}}},谢谢。{0},{0},{5}。{0},{5}。{0},5}。{0},和…………{{0} }。谢谢你的输入,但是我想要删除{{0}}之类的特殊字符。{0},5}。我的输出应该是嗨。{0},5},谢谢你。{0},5}。{0},5}。{0,5}谢谢你{0,5}.{0,5}.{0,5}谢谢你访问我们谢谢你的输入,但我想删除像{,},&,&,…..这样的特殊字符,除了{0,5}。我的输出应该是Hi。{0,5},谢谢。{0,5}.{0,5}谢谢你来看我们。请帮我实现this@sai查看更新。@sai我的当前代码产生了一个不同的结果:嗨。{0,5}谢谢。{0,5}。{0,5}感谢您访问我们
@sai您可以添加尽可能多的条件。在(x,y,z)=>…
,x
是整个匹配项,其余的按regex模式中的出现顺序捕获组值。@sai在/{val}}([\s?])中([!-\/:-@[-`{-~])/gi
regex,第1组匹配您要保留的?
或空白,因此,在回调参数中是y
。使用.replace(分隔符_regex,(x,y,z)=>y?y:z?”:“{0.5}”);
谢谢您的输入,但我想删除的是像{,},&,!…这样的特殊字符,除了{0,5}。我的输出应该是Hi。{0,5},谢谢。{0,5}。{0,5}访问我们。请帮助我实现this@sai查看更新。@sai我的当前代码产生了一个不同的结果:嗨。{0,5}谢谢。{0,5}。{0,5}感谢您访问我们
@sai您可以添加尽可能多的条件。在(x,y,z)=>…
,x
是整个匹配项,其余的按regex模式中的出现顺序捕获组值。@sai在/{val}}([\s?])中([!-\/:-@[-`{-~])/gi
regex,第1组匹配要保留的?
或空白,因此在回调参数中是y
。使用。替换(分隔符_regex,(x,y,z)=>y?y:z?”:“{0.5}”);