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 不直接支持lookbehind。为此,您需要使用 @arxanas 之前链接到的插件脚本:http: //blog.stevenlevithan.com/archives/javascript-regex-lookbehind。此外,XRegExp 不在其模式字符串中使用正斜杠分隔符。

于 2012-07-25T18:57:15.337 回答
0

尽管 Javascript 本身不支持正则表达式中的后视,但我们可以引入 XRegExp,一个更强大的 Javascript 正则表达式引擎。

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