簡體   English   中英

正則表達式用於替換引號中的字符

[英]Regex for replacing character within quotes

我有兩個測試字符串:

1+":"+2:xyz
1+"a:fb"+2:xyz

我正在嘗試替換引號之間的:。

我嘗試了這個:

(".*):(.*")

替換為:

$1Q$2

但我最終得到了這個:

1+"Q"+2:xyz
1+"Q"+2:xyz

但我最后要這樣:

1+"Q"+2:xyz
1+"aQfb"+2:xyz

有人可以幫我嗎。 必須使用Javascript。

編輯:

我已將測試工具切換為可以正常工作的工具(即直接在瀏覽器中的javascript中進行測試)。

現在可以使用:

var str = '1+"a:fb"+2:xyz';
var res = str.replace(/(".*):(.*")/g, "$1Q$2");

但是如果我在兩個引號中有兩個:,該怎么辦:

1+"a:fb"+2+":"

我現在得到以下結果:

1+"a:fb"+2+"Q":xyz

實際上,您正在嘗試替換一個由三部分組成的模式:

  1. 一點以"開頭,並且既不包含"也不包含:
  2. :
  3. 既不包含"也不:並以"結尾的位

因此表達式如下所示:

("[^:"]*):([^:"]*")

代替$1Q$2這導致

1+"Q"+2:xyz
1+"aQfb"+2:xyz

您的工作不正常的原因在於貪婪的匹配

暫無
暫無

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

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