簡體   English   中英

刪除多行textarea中特定字符后的所有字符

[英]Remove all characters on line after a specific character in multiline textarea

假設我有一個多行文本區域,每行有一個URL,我想刪除每行上實際鏈接后的所有查詢和標記,我該如何實現? 我在想只是在尋找一個“?” 並且只是刪除了“?” 以及之后的所有內容。 我需要循環遍歷所有行並輸出URL而不進行查詢。

我發現這個腳本可以刪除后的字符? 但我不知道如何使用多行文本框。

原版的

<textarea>
https://www.amazon.com/gp/product/B076736W8H?pf_rd_p=c2945051-950f-485c-b4df-15aac5223b10&pf_rd_r=9WBS7FV4YHRG3SFC42GK
https://www.amazon.com/dp/B07FGG4SNM/ref=sspa_dk_detail_6?psc=1&pd_rd_i=B07FGG4SNM&pd_rd_w=LD3nX&pf_rd_p=21517efd-b385-405b-a405-9a37af61b5b4&pd_rd_wg=L6K9T&pf_rd_r=RZJNTFFGASGBYNA71403&pd_rd_r=8d24e9dc-1470-11e9-a15a-092e7e681a0e
<textarea/>

期望的輸出

<textarea>
https://www.amazon.com/gp/product/B076736W8H
https://www.amazon.com/dp/B07FGG4SNM/ref=sspa_dk_detail_6
<textarea/>

腳本我發現:

var s = '/Controller/Action';
var n = s.indexOf('?');
s = s.substring(0, n != -1 ? n : s.length);
document.write(s);

任何幫助表示贊賞! 這是我在Html / JS中的第一個小項目。

您可以使用全局正則表達式來匹配以http開頭並包含? ,並且只用前面的部分替換整條線?

 const textarea = document.querySelector('textarea'); textarea.value = textarea.value.replace(/^(http[^?]+)\\?.+$/gm, '$1'); 
 textarea { width: 100%; } 
 <textarea> https://www.amazon.com/gp/product/B076736W8H?pf_rd_p=c2945051-950f-485c-b4df-15aac5223b10&pf_rd_r=9WBS7FV4YHRG3SFC42GK https://www.amazon.com/dp/B07FGG4SNM/ref=sspa_dk_detail_6?psc=1&pd_rd_i=B07FGG4SNM&pd_rd_w=LD3nX&pf_rd_p=21517efd-b385-405b-a405-9a37af61b5b4&pd_rd_wg=L6K9T&pf_rd_r=RZJNTFFGASGBYNA71403&pd_rd_r=8d24e9dc-1470-11e9-a15a-092e7e681a0e </textarea> 

模式

^(http[^?]+)\?.+$

手段:

  • ^ - 匹配字符串的開頭
  • (http[^?]+) - 匹配並捕獲包含的組
    • http[^?]+ - http ,其次是非? 人物
  • \\? - 匹配文字?
  • .+$ - 匹配行中的其余字符

並以$1替換第一個被捕獲的組。

暫無
暫無

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

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