2011-01-12 88 views

回答

37

您正则表达式是完美的,是的,你必须从JavaScript使用的斜线,表示正则表达式逃脱斜线。

但问题是JavaScript的replace方法不执行就地替换。也就是说,它实际上并没有改变字符串 - 它只是给你替换的结果。

试试这个:

myString = '/courses/test/user'; 
myString = myString.replace(/\/courses\/([^\/]*)\/.*/, "$1"); 
document.write(myString); 

这台myString的替代值。

9

string.replace不会修改原始字符串。相反,a会返回已执行替换的新字符串。

尝试:

myString = '/courses/test/user'; 
document.write(myString.replace(/\/courses\/([^\/]*)\/.*/, "$1")); 
9

/[\/]/g匹配斜杠。
/[\\]/g匹配反斜线。

+0

而且`/ [\/| \\]/g`匹配正反斜线。 – 2016-04-23 10:46:21

6

实际上,在你的例子的一部分(如[^\/]*就好,只是[^/]*)时,你不需要在字符类内跳过斜线。如果它不在字符类中(例如\/courses的其他示例),那么您需要避开斜杠。