Javascript 字符串的正则表达式
我有一堆字符串,需要从中返回子字符串 输出应替换以下内容的出现:Javascript 字符串的正则表达式,javascript,regex,Javascript,Regex,我有一堆字符串,需要从中返回子字符串 输出应替换以下内容的出现: Test: intervening text - Exists 与 我试过: 常量输入=[ '测试:文本-N GTTTsds-存在', '测试:此处文本内容-存在', “Tictao foo baz-bar-存在”, “有些东西还在这里”, “乔·多伊” ]; 常量输出=[]; inputs.forEachinput=>{ const resp=/?:测试:?。+-存在?/.execinput; output.pushresp
Test: intervening text - Exists
与
我试过:
常量输入=[
'测试:文本-N GTTTsds-存在',
'测试:此处文本内容-存在',
“Tictao foo baz-bar-存在”,
“有些东西还在这里”,
“乔·多伊”
];
常量输出=[];
inputs.forEachinput=>{
const resp=/?:测试:?。+-存在?/.execinput;
output.pushresp;
};
console.logoutput 为什么不直接更换它们呢 常量输入=[ '测试:文本-N GTTTsds-存在', '测试:在此处输入内容-存在', “Tictao foo baz-bar-存在”, “有些东西还在这里”, “乔·多伊” ]; const output=inputs.mapinput=>input.replace/^Test:|-存在?$/g、.trim; console.logoutput 您可以在一个迭代中删除测试,并在另一个迭代中删除-存在 常量输入=[ '测试:文本-N GTTTsds-存在', '测试:在此处输入内容-存在', “Tictao foo baz-bar-存在”, “有些东西还在这里”, “乔·多伊” ]; const output=input.maps=>s.replace/Test:\s+/g、.replace/\-\Exists?/g、;
console.logoutput 您可以将此正则表达式与锚点和惰性量词一起使用:
/^(?:Test: )?(.+?)(?: - Exists?)?$/;
此外,您还需要从结果阵列中获取第一个捕获组
常量输入=[
'测试:文本-N GTTTsds-存在',
'测试:在此处输入内容-存在',
“Tictao foo baz-bar-存在”,
“有些东西还在这里”,
“乔·多伊”
];
常量输出=[];
常量re=/^?:测试:?。+:-存在??$/;
var-resp;
inputs.forEachinput=>{
resp=重新执行输入;
如果resp!=null&&resp.length>1
output.pushresp[1];
};
console.logoutput
其他解决方案:强制ReGEX匹配每个字符串^和$的开始和结束,并通过附加../p>使中间任意字符的量词变得懒惰。 常量输入=[ '测试:文本-N GTTTsds-存在', '测试:在此处输入内容-存在', “Tictao foo baz-bar-存在”, “有些东西还在这里”, “乔·多伊” ]; 常量输出=[]; inputs.forEachinput=>{ const resp=/^?:测试:?.+?-存在?$/.execinput; output.pushresp; };
console.logoutput;我为您创建了一个代码段,第二个输入字符串只包含Exist,末尾没有s。这是故意的吗?
/^(?:Test: )?(.+?)(?: - Exists?)?$/;