替换字符串中的单词和字符

时间:2013-11-27 12:06:56

标签: javascript regex

我正在搞清楚RegExp功能并试图创建这个字符串:

api/seaarch/redirect/complete/127879/2013-11-27/4-12-2013/7/2/0/0/LGW/null

来自:

/api/search/redirect/complete/127879/2013-11-27/4-12-2013/7/2/0/0/undefined/undefined/undefined/undefined/undefined/undefined/undefined/undefined/undefined/^^undefined^undefined^undefined^undefined^undefined/undefined^undefined^undefined^undefined^undefined^undefined^undefined/undefined^undefined^undefined^undefined^undefined^undefined^undefined/undefined^undefined^undefined^undefined^undefined^undefined^undefined/LGW/null

我知道\bundefined\b\^删除'undefined ^'而undefined\b\/删除'undefined /'但是我如何将它们组合在一起?

1 个答案:

答案 0 :(得分:1)

在这种情况下,由于^/在同一位置跟随undefined,因此您可以使用字符类:

str = str.replace(/\bundefined[/^]+/g, '');

注意:^在字符类的内部和外部都是特殊的,但是以不同的方式。 Inside 一个字符类([...]),如果它是第一个字符,它就是特殊的,因此我没有把它作为上面的第一个字符。

另请注意最后的+,说^/的“一个或更多”。如果没有这个,因为有两个^^两个,你在结果中得到^

如果你想有点偏执(我承认我可能会这样),你可以逃避角色类中的/。对我而言,如果你不这样做,Chrome的实现,但尝试遵循规范中的模式定义是...令人厌倦...所以我真的不知道是否有任何实现将尝试结束字符表中/的表达式。所以随着逃跑:

str = str.replace(/\bundefined[\/^]+/g, '');