4

正規表現を使用して、ファイル名と閉じ括弧の間を一致させて置き換えたいと考えていました。

私は正規表現を書きました:

/(?<=imagecheck.php)[^)]*/

これはphpでは機能しますが、Javascriptでは機能しません。

...JSでどうすればいいですか?

例:

 input string example 1: url(127.0.0.1/imagecheck.php)
 input string example 2: url(127.0.0.1/imagecheck.php?boost=9881732213826123918238)
 outcome string example: url(127.0.0.1/imagecheck.php?reload=oh_yes_plx&boost=123810982346023984723948723023423)
4

4 に答える 4

2

Javascript では後読みはサポートされていません。"imagecheck.php"代わりにキャプチャ グループを使用して、テキストをキャプチャできます。

.match(/imagecheck.php([^)]*)/)

結果は、返された配列のインデックス 1 になります (一致する場合)。

これは、後に何かを削除する例です"imagecheck.php"

.replace(/(imagecheck.php)[^)]*/, "$1")
于 2012-07-22T04:20:40.763 に答える
2

JavaScript で後読みを行わないと、次のようにファイル名と閉じ括弧の間のすべてを置き換えることができます。

str = str.replace(/imagecheck.php\([^)]*\)/, "imagecheck.php(whatever)");

または、キャプチャ グループと番号付き参照を使用して、最初のパターンの繰り返しを回避できます。

str = str.replace(/(imagecheck.php)\([^)]*\)/, "$1(whatever)");
于 2012-07-22T04:26:06.813 に答える
1

XRegExp は後読みを直接サポートしていません。そのためには、@arxanas によって以前にリンクされたアドオン スクリプトを使用する必要があります: http://blog.stevenlevithan.com/archives/javascript-regex-lookbehind。また、XRegExp はパターン文字列内でスラッシュ区切り文字を使用しません。

于 2012-07-25T18:57:15.337 に答える
0

Javascript は正規表現で後読みをネイティブにサポートしていませんが、より強力な Javascript 正規表現エンジンであるXRegExpを取り込むことができます。

var pattern = XRegExp('/(?<=imagecheck.php)[^)]*/', 'g'); // g is the global flag
XRegExp.replace(input, pattern, replacement);
于 2012-07-22T04:26:14.117 に答える