javascript - 正则表达式在字符串中查找动态子字符串
问题描述
我有一个包含标记的字符串。在标记内部有一个标识符/或子字符串,我想选择它看起来像这样
ghost://{schema_name}/{id}
举个例子
ghost://blogging/232323
注意:如果需要,我们可以将标识符更改为更容易在字符串中找到的标识符。
将其视为字符串
const somesting = `
<h1> Random Heading </h1>
<p> Random Text </p>
<p> a href="ghost://blogging/232323"> Text I want to pick </a> </p>
`
在这里,我想选择ghost://blogging/232323
并将其更改为实际链接。
通过谷歌搜索,我发现我可以通过使用语法来实现这一点,但我不确定如何在这里(或任何其他方式)编写语法/正则表达式
如果有人可以帮助我,将不胜感激。
根据CertainPerformance的回答,我这样做了,但不幸的是这不起作用
const somesting = `
<h1> Random Heading </h1>
<p> Random Text </p>
<p> a href="ghost://xman-article/HPHvLTH06YUMfdMnokOl/spaceyfi-product-launch"> Text I want to pick </a> </p>
`;
const replaced = somesting.replace(
/ghost:\/\/(\w+)\/(\d+)/g,
(_, schema_name, id, slug) => `/${schema_name}/${id}/${slug}`
);
console.log(replaced)
解决方案
您可以使用正则表达式来匹配ghost://
,后跟单词字符(或架构名称允许的任何字符),然后是另一个斜杠和数字。这是一个如何动态替换它的示例a href="https://blogging.com/article/232323"
:
const somesting = `
<h1> Random Heading </h1>
<p> Random Text </p>
<p> a href="ghost://blogging/232323"> Text I want to pick </a> </p>
`;
const replaced = somesting.replace(
/ghost:\/\/(\w+)\/(\d+)/g,
(_, schema_name, id) => `https://${schema_name}.com/article/${id}`
);
console.log(replaced);
模式名称和 id 是回调中的变量.replace
,因此您可以随意使用它们,但您需要在那里,并在回调结束时返回要替换的字符串。
如果您有需要捕获的第三部分ghost
,则创建第三个捕获组,以便.replace
回调的第四个参数可以看到它:
const somesting = `
<h1> Random Heading </h1>
<p> Random Text </p>
<p> a href="ghost://xman-article/HPHvLTH06YUMfdMnokOl/spaceyfi-product-launch"> Text I want to pick </a> </p>
`;
const replaced = somesting.replace(
/ghost:\/\/([^/]+)\/([^/]+)\/([^"])/g,
(_, schema_name, id, slug) => `/${schema_name}/${id}/${slug}`
);
console.log(replaced)
推荐阅读
- javascript - 无法解码从 python 加密的加密字符串
- python-3.x - 将 cURL POST 命令转换为 python 请求时遇到问题
- delphi - Delphi 7 - 如果不显示正确的标签,则为多个 else
- mongodb - 如何在 MongoDB 中将 $setIntersection 与非数组数据类型一起使用
- c++ - 如何将日志发送到远程机器上的 syslog 服务器?
- node.js - 在 Google Cloud 上运行的简单 API 端点应用永远不会收到 req.body
- swift - 当用户按下 UIButton 时如何请求键盘输入?
- sql-server - 服务主密钥解密期间发生创建凭据错误
- netlify-cms - 如何在 Netlify CMS 中添加图片上传功能
- optaplanner - Optaplanner ScoreDirector 持续规划 DayOff 请求