簡體   English   中英

如何在JavaScript中將正則表達式替換為字符串中的模式

[英]How to replace regex to pattern from string in JavaScript

我有這個字符串:http: //zrack-profile-a.comaihd.net/foobar.jpg我想轉換為http://zr.ac.zrack.net/profile.ac/foobar.jpg

首先,我檢查字符串輸入是否與正則表達式匹配:

regex = "^(https?)://(?!z-[mn])(zrack)([0-9a-zA-Z.-]+)(-a.comaihd).net(:?[0-9]{0,5})"

代碼: input.match(regex)返回true 所以現在我需要用另一種模式替換這個正則表達式。

pattern = "$1://z-r.ac.zrack.net$5/$3.ac$6"

然后我做inputNew = input.replace(regex, pattern) 但是這根本不會改變inputNew; inputNew ==輸入。 我究竟做錯了什么? 此外,輸入字符串可以是各種各樣的東西,這就是為什么我的正則表達式對於提供的上述輸入字符串所需的更復雜。

以下在PHP中完美運行。

任何幫助,將不勝感激。 謝謝!

你需要這樣做:

input = input.replace(regex, pattern);

String#replace(...)僅執行替換並返回一個新的 String實例; 它不會修改原始字符串。

編輯

也許它可能與您如何定義正則表達式有關? 它必須是一個由/而不是""限制的文字。

regex = /^(https?):\/\/(?!z-[mn])(zrack)([0-9a-zA-Z.-]+)(-a.comaihd).net(:?[0-9]{0,5})/;

您還可以使用RegExp對象:

var regex = new RegExp("^(https?)://(?!z-[mn])(zrack)([0-9a-zA-Z.-]+)(-a.comaihd).net(:?[0-9]{0,5})");

regex需要是正則表達式文字

regex = /^(https?):\/\/(?!z-[mn])(zrack)([0-9a-zA-Z.-]+)(-a.comaihd).net(:?[0-9]{0,5})/

或者您需要創建一個新的RegExp對象

inputNew = input.replace(new RegExp(regex), pattern);

您可能希望使其不區分大小寫。

此外,您發布的正則表達式返回http://zr.ac.zrack.net/-profile.ac$6/foobar.jpg ,而不是http://zr.ac.zrack.net/profile.ac/foobar.jpg

編輯 :修復拼寫錯誤。

暫無
暫無

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

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