Javascript Regex替换为url

时间:2015-02-21 11:18:13

标签: javascript regex

我正在使用Javascript通过网站网址发送变量,并且我试图阻止在用户不断更改同一字段时反复复制变量:

即Admin.php?pid = 2& ENT = New_Web_Site_Launched & ENA = Stuart& ENA = Stuart& ENA = Stuart

我有多个字段,并设法通过删除第一个“&”来使第一部分工作以及使用以下代码后的所有内容。

function reload(form)
{
var val=form.NewsTitle.options[form.NewsTitle.options.selectedIndex].value;
url = location.href;
url = url.replace(/&.*$/,"");
self.location= url + '&ENT=' + val;
}

但我无法从第二个“&”中删除所有内容以及之后的一切,因为我无法弄清楚它的正则表达式。

function reload2(form)
{
var
val2=form.NewsAuthor.options[form.NewsAuthor.options.selectedIndex].value;
url = location.href;
url = url.replace(Regex Here);
self.location= url + '&ENA=' + val2;
}

如果有人可以帮助我,我需要一个能够抓住所有内容的正则表达式,包括第二个“&”之后的一切如下:

即Admin.php?pid = 2& ENT = New_Web_Site_Launched & ENA = Stuart& ENA = Stuart& ENA = Stuart

谢谢Callum

2 个答案:

答案 0 :(得分:1)

var url = "Admin.phppid=2&ENT=New_Web_Site_Launched&ENA=Stuart&ENA=Stuart&ENA=Stuart";
var regexp = /^([^&]*&[^&]*)&.*$/;
alert(url.replace(regexp, "$1"));

它只会给你Admin.php?pid=2&ENT=New_Web_Site_Launched,但我不确定你是否要保留第一部分(第二部分&之前的所有内容)或第二部分。

尝试一下:JSFiddle

答案 1 :(得分:0)

在java中 使用模式和匹配器从第二个&

中提取任何内容
Pattern p = Pattern.compile("&.*(&.*)");
Matcher m = p.matcher("Admin.php?pid=2&ENT=New_Web_Site_Launched&ENA=Stuart&ENA=Stuart&ENA=Stuart");

if (m.find()) {
    url = url.replace(m.group(1),"");
}
System.out.println(url);

首先它会在第二个和第二个之后匹配所有内容。来自网址,然后它将从您的网址

中取代它

输出:Admin.php?pid = 2& ENT = New_Web_Site_Launched

在javascript中

var url = "Admin.php?pid=2&ENT=New_Web_Site_Launched&ENA=Stuart&ENA=Stuart&ENA=Stuart"

var re = /&.*(&.*)/;
var result = re.exec(url);
if(result !=null)
{
   url = url.replace(RegExp.$1,"");
   alert(url);
}