gpt4 book ai didi

javascript - 正则表达式删除子字符串和其他字符

转载 作者:行者123 更新时间:2023-12-03 05:53:45 25 4
gpt4 key购买 nike

我有以下字符串

var myName = 'names:(taga || tagb || tagc)'

这个正则表达式删除名称:括号

  myName = myName.replace(/(names:)?\s*\(?([^)]*)(\)$)?/, '$2').trim(); 

myName 的输出是:taga||tagb||tagc

我还有一个

var myName2 = 'names:tag1names: || names:tag2 || names:tag3'

我想返回:tag1names:||tag2||tag3,但它返回tag1names:||names:tag2||names:tag3

我可以使用正则表达式来删除 || 之前每个字符串的第一个名称吗?所以它适用于两种情况

两个输入字符串:

'names:(taga || tagb || tagc)' -> return taga||tagb||tagc
'names:tag1name: || names:tag2 || names:tag3' -> return tag1name:||tag2||tag3

最佳答案

不完全确定您的完整用例,但也许:

// try a sample
myName = "names:(taga || tagb || tagc)\nnames:tag1names: || names:tag2 || names:tag3";

// revised regex
myName = myName.replace(/(?:(?:\bnames:)?\s*\(([^)]*)\)|\bnames:)/g, '$1').trim();

// results in stripped output
myName == "taga || tagb || tagc\ntag1names: || tag2 || tag3"

我简化了你的一些正则表达式:

  • 您可以使用 (?:regex) 忽略匹配组。
  • 您可以使用|来匹配不同的替代表达式。
  • 当匹配组位于不匹配的替代项中时,相应的捕获为空白。
  • 我使用了 g 选项来替换所有匹配项。
  • 您可以使用 \b 来确保单词匹配。

您可以使用类似 https://regex101.com/ 的工具来验证和实验。我添加了这个特定的正则表达式:https://regex101.com/r/NEgbTu/1

祝你好运!

关于javascript - 正则表达式删除子字符串和其他字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40032568/

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