javascript 通过Regex更改Gatsby节点

5us2dqdw  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(95)

我有YAML的frontmatter在盖茨比网站,是格式化为地理链接,像这样:
第一个月
我想在传单Map上显示这些位置,我认为其前页样式最好为:
Location: 51.485978,-0.1721193
供瓣叶格式化。
我如何将这些节点转换成我想要的格式,例如使用正则表达式?或者我最好在Leaflet解析时转换它们?

brvekthn

brvekthn1#

你没有提供一个YAML文件的例子,所以我在这里提供一个例子,但我有点在黑暗中摸索。一个简单的正则表达式可以根据需要更改位置行:

const input =`title: This is from YAML
Location: [La Mia Mamma](geo:51.485978,-0.1721193)
content:
 - item:
     Foo bar
Location: [Mia Mamma!](geo:51.123456,-0.16666)
content:
 - item:
     Foo bar
`;
let result = input.replace(/^(Location: *)[^(]*\(geo:([^)]*)\)/gm, '$1$2');
console.log(result);

正则表达式的解释:

  • ^-字符串的开始(由于m标志,此处为行
  • (Location: *)-捕获组1:文字Location:
  • [^(]*-扫描除(之外的所有对象
  • \(geo:-应为文本(geo:
  • ([^)]*)-捕获组2:扫描除)以外的所有内容
  • \)-文字)
  • gm-全局匹配(多次)的标志,并使regex使用换行符作为字符串开始和结束的分隔符
  • $1$2-替换为捕获组1,后跟捕获组2

相关问题