簡體   English   中英

在javascript中使用正則表達式替換

[英]replacement using regex expression in javascript

我在Java中有一個HTML字符串,其中的某些屬性中包含數據

一個例子是

<img class="show-grid" src="http://localhost:4502/content/dam/original" alt="4.7-products.jpg">

現在,我遇到的問題是我想在src屬性(以http開頭並以此處以original開頭的字符串)內的字符串末尾添加一些字符串。

我唯一知道的是:

  • 字符串始終以http開頭。

我不知道的事

  • 字符串的結束順序是什么。
  • 此處的目標屬性后面可能還有另一個屬性(在這種情況下,目標屬性為src)。

我嘗試了以下正則表達式:

target.search(/(\bhttp.*\"\b)/gi)

這個想法是找到所有字符串:

  • http開頭,以"結尾。

因此,我認為此正則表達式將為我提供以下字符串:

http://localhost:4502/content/dam/original"

但是相反,它給了我:

http://localhost:4502/content/dam/original" alt="

知道為什么它超出了當前單詞,是不是因為它在單詞之間尋找空格,然后當它在空格分開的新單詞中找到""就停止了在此處的搜索。

如何修改target.search(/(\\bhttp.*\\"\\b)/gi)以獲得所需的結果?

只需拆分即可,並以積極的眼神重新添加所需的角色

String string = "http://yourtestinthstsdfasdfasdfhttp://moreteststrings";
String[] parts = string.split("(?=http)");
String part1 = parts[0]; // is http://yourtestinthstsdfasdfasdf
String part2 = parts[1]; // is http://moreteststrings

您的正則表達式是“貪婪的”(請參閱​​: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/RegExp https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/RegExp )。 要對其進行更改, /(\\bhttp.*\\"\\b)/ /(\\bhttp.*?\\"\\b)/修改為/(\\bhttp.*?\\"\\b)/

編輯:這仍然行不通,請參閱下面的消息

該正則表達式使用默認的貪婪修飾符。 這意味着它將搜索盡可能多的 * (任何字符)。 相反,您要查找的是*? (零個或多個,非貪婪的)修飾符,可更改此行為。

您的新正則表達式搜索如下所示:

target.search(/http.*?\"/gi)

/http.*(?=\\"\\s)/gi將匹配從http到結束引號的所有內容,后跟一個空格,它使用(?=),稱為正向超前。

如果您只想匹配src屬性中的任何內容而無需推測是否存在http字符串,則采用另一種方法: src="([^"]*)

您可以使用它https://regex101.com/r/rH0yZ2/3

暫無
暫無

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

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