![](/img/trans.png)
[英]How to replace a pattern in string with a strong tag using regex and 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.