Скажем, у меня есть многострочная текстовая область с одним URL на строку, и я хочу удалить все запросы и теги после фактической ссылки в каждой строке, как я могу это сделать? Я думал просто искать "?" и просто стирая "?" вместе со всем содержанием после него. Мне нужно перебрать все строки и вывести URL-адреса без запросов.
Я нашел этот скрипт, который может удалять символы после? но я не уверен, как заставить его работать с многострочным текстовым полем.
ORIGINAL
<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 и содержат ?, и заменить всю строку только частью перед ?:
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[^?]+
\?
.+$
И заменить $1 первой захваченной группой.
$1