gpt4 book ai didi

Javascript regex-如何在组内查找 PascalCase 项

转载 作者:行者123 更新时间:2023-12-04 09:02:49 25 4
gpt4 key购买 nike

我需要转换这样的东西:[[Click here|ThisIsALink]]到:[Click here](https://example.com/this-is-a-link)我能找到第一个 [[Click here|ThisIsALink]]通过使用这个正则表达式 /\[\[(.*?)\|(.*?)\]\]/g我可以将其替换为 [Click here](https://example.com/ThisIsALink]) ,但是我怎么能把最后一部分转换成 this-is-a-link ?我已经尝试了一些事情,但我似乎找到了所有 PascalCased 事件,而不仅仅是在第一个找到的正则表达式模式中发生的事件。 (我正在将 .md 文件转换为 .pdf,所以它是一整页的内容,而不仅仅是这些链接)。
这是我到目前为止所拥有的

var exampleUrl = "https://example.com/";
var urlOne = /\[\[(.*?)\|(.*?)\]\]/g;

data.replace(urlOne, "[$1](" + exampleUrl + "$2)"));
这导致: [Click here](https://example.com/ThisIsALink)

最佳答案

您可以使用

const texts = ["Text [[Click here|ThisIsALink]] text...",
"Text [[Click here|This-Is-A-Link]] text..."];
const exampleUrl = "https://example.com/";
const urlOne = /\[\[((?:(?!\[\[).)*?)\|(.*?)]]/g;
for (var text of texts) {
console.log(
text.replace(urlOne, (_,x,y) =>
`[${x}](${exampleUrl}${y.replace(/[^A-Za-z]+/g, '')
.replace(/(?!^)[A-Z]/g, '-$&')
.toLowerCase()})`) );
}

正则表达式 #1 详细信息:
  • \[\[ - [[字符串
  • ((?:(?!\[\[).)*?) - 第 1 组:除换行符以外的任何字符,零次或多次,尽可能少,不以 [[ 开头字符序列
  • \| - 一个 |字符
  • (.*?) - 第 2 组:除换行符以外的任何零个或多个字符,尽可能少
  • ]] - 一个 ]]字符串。

  • 第二个正则表达式, (?!^)[A-Z] , 应用于第 2 组内容,并匹配任何不在字符串开头的大写 ASCII 字母。 -$&替换只是附加 -比赛前。
    额外的正则表达式, .replace(/[^A-Za-z]+/g, '') , 将在插入连字符之前从 Group 2 内容中删除所有非字母字符。

    关于Javascript regex-如何在组内查找 PascalCase 项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63526794/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com