簡體   English   中英

JS正則表達式替換兩個字符或單詞之間的句子

[英]JS regex replace sentence between two characters or words

我在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/, ''); 這個問題中的空字符串替換H和S之間的所有內容-我嘗試使用上面的開始和結束字符串選擇器,該選擇器替換了從第一個開始選擇器到最后一個選擇器的最后一個出現的所有內容,導致Subject_name: English, Overall_marks:80,這不是我所需要的。 試圖將其放置在數組中,但導致出現隨機字符(對regex不熟悉,因此很混亂)。

如何實現我要實施的替換?

試試這個: 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')); 

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

你可以在這里嘗試

試試吧

 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); 

如果行如上所述,則可能不需要正則表達式。

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

將適用於大多數情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM