0

我正在寻找一些删除字符串的 .html 扩展名的正则表达式。

我已经发现这两个由于某种原因它们不起作用:

var path = './views/contacts/node/item.html';
var otherPath = path;
path.replace(/\.[^/.]+$/, '');
console.log(path);
// returns ./views/contacts/node/item.html
otherPath.replace(/(.*)\.[^.]+$/, '');
console.log(otherPath);
// also returns ./views/contacts/node/item.html

知道有什么问题吗?

4

3 回答 3

2

您的原始regex作品,您只是没有捕获返回结果。以下两种方法都将起作用:

path = path.replace(/\.[^/.]+$/, '');

path = path.replace(/\.html$/, '');

http://jsfiddle.net/AE2BY/

于 2012-08-18T18:21:07.810 回答
1
path = path.replace(/\.html$/, '');

假设 .html 扩展名总是在字符串的末尾。

至于您提到的正则表达式有什么问题-它们不正确,并且永远不会与您提供的示例字符串匹配。

于 2012-08-18T18:23:20.463 回答
1
var path = './views/contacts/node/item.html';
var otherPath = path.replace(/(\.html).*?$/, '');

console.log(otherPath) // './views/contacts/node/item'

这应该删除包括“ .html”之后的所有内容。

您没有从上面列出的函数中得到想要的结果的原因是因为您console.log输入了错误的变量。改变:

var path = './views/contacts/node/item.html';
var otherPath = path;
path.replace(/\.[^/.]+$/, '');
console.log(path);

到:

var path = './views/contacts/node/item.html';
var otherPath = path.replace(/\.[^/.]+$/, '');
console.log(otherPath);
于 2012-08-18T18:28:52.657 回答