【问题标题】:Remove Brackets and Text Between Using Javascript在使用 Javascript 之间删除括号和文本
【发布时间】:2013-03-24 02:26:19
【问题描述】:

我有一个带有许多不同括号/大括号/括号的长字符串({{...}},{...},[...],[[...]],<...> ) 有些在其他人里面。

我想使用 JS 删除这些括号以及其中的任何文本/等(除了不在其他括号内的 [[...]],在这种情况下,我只想删除括号)。

这是我正在使用的字符串类型的示例:

{{pp-move-indef}} {{Taxobox |名称 = 红熊猫 |状态 = 似曾相识 |状态系统= iucn3.1 |状态参考 = |图片 = RedPandaFullBody.JPG | regnum = [[动物]]ia |门 = [[脊索动物|脊索动物]] |类 = [[哺乳动物]]ia | ordo = [[食肉目]] | subordo = [[Caniformia]] | infraordo = [[Arctoidea]] | superfamilia = [[Musteloidea]] | familia = [[Ailuridae]] |属 = Ailurus | genus_authority = [[弗雷德里克居维叶|F.居维叶]], 1825 |物种 = A. fulgens |二项式 = Ailurus fulgens | binomial_authority = [[弗雷德里克居维叶|F。居维叶]], 1825 | range_map = Cypron-Range Ailurus fulgens.svg | range_map_caption = 红熊猫范围 | subdivision_ranks = 亚种 |细分 = A. f. fulgens
A. F。 }}

小熊猫(Ailurus fulgens,字面意思是“闪亮的猫”),是一种小型 [[arboreal]] [[mammal]],原产于东部 [[Himalayas]] 和西南部 [[China]]{{IUCN |assessors=Wang, X., Choudhry, A., Yonzon, P., Wozencraft, C., Than Z. |year=2008 |id=714 |taxon=Ailurus fulgens |version=2010.4 |downloaded=2010 年 6 月 26 日} } 并与 [[raccoon]]s、[[skunk]]s 和 [[weasel]]s 相关。它是 Ailurus 属和科 [[Ailuridae]] 中唯一现存的物种。它比 [[家猫]] 略大,有红棕色的皮毛,长而蓬松的尾巴,由于前腿较短,步态蹒跚。它主要以[[竹笋|竹]]为食,但为[[杂食性]],也可能吃鸡蛋、[[鸟]]、[[昆虫]]和小型[[哺乳动物]]。它是一种[[独居动物]],主要是[[夜间活动|从黄昏到黎明活动]],白天主要是[[久坐的生活方式|久坐的]]。

期望的结果

小熊猫(Ailurus fulgens,字面意思是“闪亮的猫”)是一种小型树栖哺乳动物,原产于喜马拉雅山脉东部和中国西南部,与浣熊、臭鼬和黄鼠狼有关。它是小熊猫属和小熊猫科唯一现存的物种。它比家猫略大,有红棕色的皮毛,长而蓬松的尾巴,由于前腿较短,步态蹒跚。主要以竹笋为食,杂食性,也可以吃蛋、鸟、昆虫和小型哺乳动物。它是一种独居动物,主要是夜间活动|从黄昏到黎明活动,白天主要是久坐不动的生活方式。

【问题讨论】:

  • 请发布您迄今为止尝试过的方法。什么不起作用,你到底卡在哪里?
  • 尝试过string.replace(some regex,''),但对获得预期结果的了解还不够。这可以用.replace() 完成吗?
  • 啊,所以“嵌套括号”总是连续的? IE。它永远是{{...}},但永远不会是{...{...}...}
  • 我认为是正确的。

标签: javascript regex parsing replace


【解决方案1】:
function removeBrackets(input) {
    return input
        .replace(/{.*?}/g, "")
        .replace(/\[.*?\]/g, "")
        .replace(/<.*?>/g, "")
        .replace(/\(.*?\)/g, "");
}

【讨论】:

  • 这将为{{...}} 或任何其他嵌套的括号集生成损坏的结果。
【解决方案2】:

注意:这是基于上述@Joseph Lennox 的建议。

function removeBrackets(input) {
    return input
        .replace(/{+.*?}+/g, "")
        .replace(/\[\[|\]\]/g, "")
        .replace(/<.*?>/g, "");
}

... + 让我们吸收 {{ 和 }} 等。

【讨论】:

  • “其中一些在其他内部” 也可能意味着输入可以是{...{...}...}。但 OP 必须澄清这一点。
  • 遗憾的是,JS 的正则表达式缺乏递归支持,因此无法通过正则表达式实现。提问者不是很清楚/仍然不是,所以我怀疑有人在这艘船上跳。
  • 我添加了一个例子,希望它能澄清问题。
  • 我已更新响应以匹配您的示例。它似乎产生了我想要的结果。
猜你喜欢
  • 1970-01-01
  • 2011-01-11
  • 2021-01-27
  • 2011-05-16
  • 2020-04-08
  • 2021-09-25
  • 2020-07-04
  • 2018-12-19
相关资源
最近更新 更多