将正则表达式放入正则表达式时,我是否必须转义斜线?JavaScript正则表达式替换 - 转义斜杠
myString = '/courses/test/user';
myString.replace(/\/courses\/([^\/]*)\/.*/, "$1");
document.write(myString);
而不是打印“测试”,它打印整个源字符串。
看到这个演示:
http://jsbin.com/esaro3/2/edit
将正则表达式放入正则表达式时,我是否必须转义斜线?JavaScript正则表达式替换 - 转义斜杠
myString = '/courses/test/user';
myString.replace(/\/courses\/([^\/]*)\/.*/, "$1");
document.write(myString);
而不是打印“测试”,它打印整个源字符串。
看到这个演示:
http://jsbin.com/esaro3/2/edit
您正则表达式是完美的,是的,你必须从JavaScript使用的斜线,表示正则表达式逃脱斜线。
但问题是JavaScript的replace
方法不执行就地替换。也就是说,它实际上并没有改变字符串 - 它只是给你替换的结果。
试试这个:
myString = '/courses/test/user';
myString = myString.replace(/\/courses\/([^\/]*)\/.*/, "$1");
document.write(myString);
这台myString
的替代值。
string.replace
不会修改原始字符串。相反,a会返回已执行替换的新字符串。
尝试:
myString = '/courses/test/user';
document.write(myString.replace(/\/courses\/([^\/]*)\/.*/, "$1"));
/[\/]/g
匹配斜杠。
/[\\]/g
匹配反斜线。
实际上,在你的例子的一部分(如[^\/]*
就好,只是[^/]*
)时,你不需要在字符类内跳过斜线。如果它不在字符类中(例如\/courses
的其他示例),那么您需要避开斜杠。
而且`/ [\/| \\]/g`匹配正反斜线。 – 2016-04-23 10:46:21