Regex用于删除子字符串和其他字符

regex to remove substring and other characters

本文关键字:其他 字符 字符串 用于 删除 Regex      更新时间:2023-09-26

我有以下字符串

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

祝你好运!