Rad*_*mko 33 javascript regex escaping
将它们放入正则表达式时,我是否必须逃避斜线?
myString = '/courses/test/user';
myString.replace(/\/courses\/([^\/]*)\/.*/, "$1");
document.write(myString);
Run Code Online (Sandbox Code Playgroud)
它不打印"test",而是打印整个源字符串.
看这个演示:
Rei*_*eid 43
你的正则表达式是完美的,是的,你必须逃避斜杠,因为JavaScript使用斜杠来表示正则表达式.
但是,问题是JavaScript的replace
方法不执行就地替换.也就是说,它实际上并没有改变字符串 - 它只是给你替换的结果.
试试这个:
myString = '/courses/test/user';
myString = myString.replace(/\/courses\/([^\/]*)\/.*/, "$1");
document.write(myString);
Run Code Online (Sandbox Code Playgroud)
这将设置myString
为替换值.
Bre*_*mir 10
实际上,你不需要像在你的例子中的一部分那样在字符类内部转义斜杠(即,[^\/]*
只是正常[^/]*
).如果它在一个字符类之外(就像你的例子的其余部分那样\/courses
),那么你需要转义斜杠.
string.replace
不会修改原始字符串.相反,a返回已执行替换的新字符串.
尝试:
myString = '/courses/test/user';
document.write(myString.replace(/\/courses\/([^\/]*)\/.*/, "$1"));
Run Code Online (Sandbox Code Playgroud)