JS正则表达式替换两个字符或单词之间的句子

时间:2018-04-10 10:55:55

标签: javascript regex replace

我在JS变量中有一些冗长的文本,我打算将其传递给html文本框,但在此之前我想将其修剪为相关的文本。如果我有这个:

Subject_name: English, Teacher_name: John Doe, Remarks: some comment, Overall_marks:87,
Subject_name: Mathematics, Teacher_name: Doe John, Remarks: some comment, Overall_marks:75,
Subject_name: Science, Teacher_name: JD, Remarks: some comment, Overall_marks:80,

我想将"Teacher_name: John Doe, Remarks: some comment, "替换为空字符串"",以实现:

Subject_name: English, Overall_marks:87,
Subject_name: Mathematics, Overall_marks:75,
Subject_name: Science, Overall_marks:80,

所以基本上我想选择"Teacher_name"作为开头,"comment, "作为结束,但我不确定如何实现这一目标。我在这里看到的例子以及关于SO的问题都是针对在这种情况下无法工作的单个字符。

这样的例子是 - .replace(/H.*S/, '');this question中的空字符串替换H和S之间的所有内容 - 我尝试使用上面的开始和结束字符串选择器替换了从第一个开始选择器到最后一个选择器的最后一个出现的所有内容,导致Subject_name: English, Overall_marks:80,这不是我需要的。试图把它放在一个数组中但导致随机字符(不熟悉正则表达式,因此混乱)。

如何实现替换?我试图实施?

4 个答案:

答案 0 :(得分:2)

试试这个:str.replace(/Teacher_name.*?Overall_marks/g, 'Overall_marks')



let str=`Subject_name: English, Teacher_name: John Doe, Remarks: some comment, Overall_marks:87,
Subject_name: Mathematics, Teacher_name: Doe John, Remarks: some comment, Overall_marks:75,
Subject_name: Science, Teacher_name: JD, Remarks: some comment, Overall_marks:80,`;
console.log(str.replace(/Teacher_name.*?Overall_marks/g, 'Overall_marks'));




答案 1 :(得分:1)

您可以使用/Teacher_name:[\w\s]+,\s*Remarks:[\w\s]+,\s*/gi

你可以尝试here

答案 2 :(得分:1)

试试吧

var input = `Subject_name: English, Teacher_name: John Doe, Remarks: some comment, Overall_marks:87,
Subject_name: Mathematics, Teacher_name: Doe John, Remarks: some comment, Overall_marks:75,
Subject_name: Science, Teacher_name: JD, Remarks: some comment, Overall_marks:80,`;

var output = input.replace(/Teacher_name:.*?(?=Overall_marks)/g,'');

console.log(output);

答案 3 :(得分:0)

如果如上所述描述了行,则可能不需要正则表达式。

var splitted = sentence.split(",");
splitted[0] + splitted[splitted.length - 1]

适用于大多数情况。