正则表达式用字和字符替换字符串

时间:2012-03-05 14:35:28

标签: javascript regex

我有三个正在使用的正则表达式,

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

6 个答案:

答案 0 :(得分:2)

只需使用替代方法,即将交替运算符|之前的每个正则表达式分开:

catalogue|20%|[/:]

另请注意,您不能像在那里那样组合字符类和文字字符串。以上天真的组合工作以及除此之外的一切都可能是优化(即使在这种情况下无法进一步优化) - 但这只有在您不更改正则表达式描述的语言时才有效。

答案 1 :(得分:2)

你似乎在那里有一个拼写错误(\c),你也不希望20%在字符类中(你应该逃避斜杠)。如果您想允许catalogue20%匹配,则还需要删除字边界 - catalogue20之间没有边界,因此\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, '')