我有三个正在使用的正则表达式,
string.replace(\catalogue\g, "") // replace a the word catalogue
string.replace(/[/:]/g, "") // replace the characters /, :
string.replace(\20%\g, "") // replace '20%'
我想要结合我的正则表达式,而不是三次替换字符串。
通缉结果='removethewordnow';
var string = 'rem:ove20%the/word:catalogue20%now';
我最近的尝试是:
string.replace(/\catalogue\b|[/20%:]/g, ""); // works, but catalouge is unaffected and 20% isn't combined as a word
答案 0 :(得分:2)
只需使用替代方法,即将交替运算符|
之前的每个正则表达式分开:
catalogue|20%|[/:]
另请注意,您不能像在那里那样组合字符类和文字字符串。以上天真的组合工作以及除此之外的一切都可能是优化(即使在这种情况下无法进一步优化) - 但这只有在您不更改正则表达式描述的语言时才有效。
答案 1 :(得分:2)
你似乎在那里有一个拼写错误(\c
),你也不希望20%
在字符类中(你应该逃避斜杠)。如果您想允许catalogue20%
匹配,则还需要删除字边界 - catalogue
和20
之间没有边界,因此\b
失败:
string.replace(/catalogue|20%|[\/:]/g, "");
答案 2 :(得分:2)
脱离我的头顶:
string.replace(/(catalogue|[\/:]|20%)/g,"");
答案 3 :(得分:1)
var string = 'rem:ove20%the/word:catalogue20%now';
string.replace(/([:/]|20%|catalogue)/g, '');
答案 4 :(得分:0)
\b
指的是单词边界,但您的单词目录与其他单词混合在一起。所以你的正则表达式应该是:
string.replace(/catalogue|[\/20%:]/g, "");
同时使用/
转义\/
。
答案 5 :(得分:0)
string.replace(/catalogue|20%|[/:]/g, '')