我正在搞清楚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 /'但是我如何将它们组合在一起?
答案 0 :(得分:1)
在这种情况下,由于^
或/
在同一位置跟随undefined
,因此您可以使用字符类:
str = str.replace(/\bundefined[/^]+/g, '');
注意:^
在字符类的内部和外部都是特殊的,但是以不同的方式。 Inside 一个字符类([...]
),如果它是第一个字符,它就是特殊的,因此我没有把它作为上面的第一个字符。
另请注意最后的+
,说^
或/
的“一个或更多”。如果没有这个,因为有两个^^
两个,你在结果中得到^
。
如果你想有点偏执(我承认我可能会这样),你可以逃避角色类中的/
。对我而言,如果你不这样做,Chrome的实现,但尝试遵循规范中的模式定义是...令人厌倦...所以我真的不知道是否有任何实现将尝试结束字符表中/
的表达式。所以随着逃跑:
str = str.replace(/\bundefined[\/^]+/g, '');