Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 替换字符串中的单词和字符_Javascript_Regex - Fatal编程技术网

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

Javascript 替换字符串中的单词和字符,javascript,regex,Javascript,Regex,我正在研究RegExp函数的功能,并尝试创建以下字符串: api/seaarch/redirect/complete/127879/2013-11-27/4-12-2013/7/2/0/0/LGW/null 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/u

我正在研究RegExp函数的功能,并尝试创建以下字符串:

api/seaarch/redirect/complete/127879/2013-11-27/4-12-2013/7/2/0/0/LGW/null 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 /api/search/redirect/complete/127879/2013-11-27/4-12-2013/7/2/0/0/undefined/undefined/undefined/undefined/undefined/undefined/undefined/undefined/undefined/^^未定义^未定义^未定义^未定义^未定义^未定义^未定义^未定义^未定义^未定义^未定义^未定义/u未定义^undefined^未定义^undefined^未定义^undefined^未定义/LGW/null
我知道
\bundefined\b\^
删除“undefined^”和
undefined\b\//code>删除“undefined/”,但如何将它们组合在一起?

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

str = str.replace(/\bundefined[/^]+/g, '');
注意:
^
在字符类内外都是特殊的,但方式不同。在字符类(
[…]
)中,只有当它是第一个字符时才是特殊的,因此我没有将它作为上面的第一个字符

还要注意结尾处的
+
,表示
^
/
中的“一个或多个”。如果没有这一点,因为有两个double
^
,结果是
^

如果你想变得有点偏执(我承认我可能会),你可以在character类中避开
/
。对我来说,如果你不这样做,Chrome的实现也能起作用,但是尝试遵循规范中的模式定义是…令人厌倦的…所以我真的不知道是否有任何实现会尝试结束character类中的
/
表达式。所以关于逃跑:

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

不仅仅是
^
,它是
\^
,它是转义的,所以一个字面的
^
@beerbajay:(你的意思是在问题中。)谢谢,我有点误解了。