0

文字列の .html 拡張子を削除する正規表現を探しています。

何らかの理由でこれら2つが機能しないことをすでに見つけました:

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 に答える