0

こんにちは私は正規表現に不慣れで、これに対する適切な解決策を見つけることができません:

2つのスラッシュ「/1032/」フォームURL「http://www.blablabla.com/test.php/addpage/1032/」の間のURLの最後のパラメーターを切り取りたい

http://www.blablabla.com/test.php/addpage/を持っていること ...この部分を一致させることは重要ではありませんが...最後のスラッシュの間のパラメーターを切り取ってください...

私がしたことは:

curr_url= "http://www.blablabla.com/test.php/addpage/1032/";
expression =/.*\/./;
alert(expression.exec(curr_url));

結果は「http://www.blablabla.com/test.php/addpage/1」です。これで、最後のパラメーターをスライスで切り取ることができましたが、それは合理的ではないと思います。

より良い解決策はありますか?どうもありがとう!

4

3 に答える 3

1
curr_url.match(/.+(\/.+\/)$/)

["http://www.blablabla.com/test.php/addpage/1032/"、 "/ 1032 /"]

最初の貪欲.+は最後のスラッシュまですべてをキャプチャし、次にパターンの残りが失敗するため、最後から2番目に戻ります。()このスラッシュと最後のスラッシュの間のすべてをキャプチャし\/$、最後に文字列が最後のスラッシュの後に終了するように指示します。数字自体だけが必要な場合は、スラッシュを角かっこの外側に移動します。

私はあなたの意図を誤解したようですが。文字列の最初の部分が必要な場合は、少し変更を加えて、以下の正規表現で提案されたものを使用できます。

curr_url.match(/(.+)\/.+/)[1]

それは「スラッシュまでのすべて、そしてそれからさらにいくつか」をキャプチャします。最初に文字列の最後のスラッシュに到達しますが、「それからもう少し」がないため、前のスラッシュに戻り、文字列の必要な部分を正確に残します。

于 2012-05-02T08:32:04.390 に答える
1
var parts=curr_url.split('/');

その後、配列から任意の部分を取得できます。

于 2012-05-02T08:37:37.027 に答える
1

あなたの表現で

/.*\/./

スラッシュの後に文字があることをパターンに伝えるために最後のドットが必要ですが、これも一致しているため、結果に含まれます。削除すると最後のスラッシュまで一致するため、解決策はありません。

しかし、パターンの後に何をすべきかを定義し、そのようなものと一致しないようにする方法があります。それは先読みアサーションと呼ばれます。

だからあなたはすることができます

/.*\/(?!$)/

そして(?!$)、「文字列の終わり($)が続かない場合にのみ前のスラッシュと一致する」ことを意味する否定的な先読みアサーションです。

curr_url= "http://www.blablabla.com/test.php/addpage/1032/";
expression =/.*\/(?!$)/;
alert(expression.exec(curr_url));

あなたが欲しいものも返します。

于 2012-05-02T08:57:28.657 に答える