我有以下字符串
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
答案 0 :(得分:1)
不完全确定您的完整用例,但可能:
// 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
祝你好运!