簡體   English   中英

string.replace不適用於正則表達式

[英]string.replace does not work with regex

我有以下字符串dfdfd dsfsdfsdfsdf {{random.number}} dsfdsfsdfsdf {{bla}}和簡單的代碼(可替換給定字符串中的任何{{...}}

const b = template.replace(/\{{(.*)\}}/g, 'aaaa');

template.replace卻什么也沒發生,但是正則表達式似乎與所有{{}}都匹配

有什么想法嗎?

更新:

剛剛意識到我的輸入字符串是錯誤的。 現在我都在使用原始正則表達式了。 但是,由於有了@ Robo-Robok,現在我了解了greedy的正則表達式,並將繼續使用他的正則表達式。

默認情況下,正則表達式是貪婪的。 您的.*盡可能多地吃東西,其中包括第一對}}

嘗試以下方法:

const b = template.replace(/\{\{.*?\}\}/g, 'aaaa');

*之后的問號? 使匹配不貪心。

還有兩件事:

  1. 最好不要使用所有花括號。 您的模式在不轉義的情況下將可以很好地工作,但是最好將其表示為常規文本。
  2. 在您的情況下,括號是多余的,因為對於花括號之間的字符串,您不執行任何操作。

暫無
暫無

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

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