如何将正则表达式从JavaScript字符串替换为模式
How to replace regex to pattern from string in JavaScript
我有这个字符串:http://zrack-profile-a.comaihd.net/foobar.jpg我想把它转换成http://z-r.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);
你可能想让它不区分大小写。
另外,您发布的regex返回http://z-r.ac.zrack.net/-profile.ac$6/foobar.jpg
,而不是http://z-r.ac.zrack.net/profile.ac/foobar.jpg
。
编辑:修正错字
相关文章:
- 字符串替换-不支持格式字符'}'
- Unicode字符串替换不适用于完整的变音符号阿拉伯文本
- Javascript 将字符串替换为
返回为空 - 字符串替换只替换第一个匹配项,可以'不要让它全球化
- javascript字符串替换$1(如果它是某个值)
- 字符串替换正则表达式,开头为空格
- 将 url 中的一个字符串替换为另一个字符串
- 在HTML文本框中查找某些子字符串,然后用其他字符串替换它们
- 我想使用replace函数扫描json对象,然后用字符串替换匹配的单词
- 字符串替换为从右向左的语言(阿拉伯语)
- 将字符串替换为用户键入的文本
- 字符串替换javascript
- JavaScript 将多行字符串替换为多行字符串
- Javascript字符串替换不起作用
- 字符串替换不'当通过android webView JavascriptInterface传递字符串时无法工作
- 我正在尝试用另一个字符串替换一个字符串
- 字符串替换最后一个字符出现的斜杠
- 将具有的字符串替换为$
- 基于查询字符串替换HTML
- Javascript字符串替换在满足长度而不是instantanoeus之前不会生效