请大家帮忙看下这个正则如何写

时间:2021-12-30 07:45:56
想将字符串"www.baidu.com/index.html?name=123&title=456"
替换为"www.baidu.com/index.html?name='123'&title='456'"
尝试着写了一下不起作用,请大家帮忙指点一下,对正则太生疏.
var strurl="www.baidu.com/index.html?name=123&title=456";
strurl.replace(/=(\.*)(&|$)/gi,"'$1'");
alert(strurl)

17 个解决方案

#1


<SCRIPT LANGUAGE="JavaScript">
var xxx = "www.baidu.com/index.html?name=123&title=456";
var re = /(name\=)([\w]*)(\&)(title\=)([\w]*)/g
xxx = xxx.replace(re,function($0,$1,$2,$3,$4,$5){return $1+'\''+$2+'\''+$3+$4+'\''+$5+'\''});
alert(xxx);
</script>
<body>

</body>

#2


<script>
var strurl="www.baidu.com/index.html?name=1w23&title=4_536";
strurl=strurl.replace(/=([\w]*)($|&)/gi,"='$1'$2");
alert(strurl)
</script>

#3


<script language="javascript">
//alert('')
var a="www.baidu.com/index.html?name=123&title=456"
alert(a.replace(/\=(.*?)(\&|$)/g,"='$1'$2"))
//alert(/^\(\d{3}\)\d{3}\-\d{4}$/.test('(121)123-123'))
</script>

#4


谢谢三位都可以用,我有个疑惑想请教各位,为什么/\=(.*?)(&|$)/g 会得到name='123'&title='456'而/\=(.*)(&|$)/g 或/\=(.*)?(&|$)/g会得到name='123&title=456'呢
?(/=([\w]*)($|&)/gi没有?却可以得到正确结果,究竟正则的匹配是一个怎样的过程呢?

#5


=([\w]*)($|&) 匹配的是=123&(前面和中间的参数)   =456(最后一个参数)之类的
替换后 都替换成='123'&  or   ='456'

#6


1.4.1 简单量词
  ?:出现零次或一次;
  *:出现零次或多次;
  +:出现一次或多次;
  {n}:一定出现n次;
  {n,m}:至少出现n次但不超过m次;
  {n,}:至少出现n次;
1.4.2 贪婪的、惰性的和支配性的量词
  贪婪量词先看整个字符串是不是匹配,如果没有发现匹配,先去掉最后字符串中的最后一个字符,并再次尝试,如果还没有发现匹配,那么再次去掉最后一个字符,这个过程会一直重复下去直到发现匹配或不剩任何字符串,上面的简单量词都是贪婪量词。
  惰性量词先看字符串中的第一个字母是不是一个匹配,如果不匹配则继续读入下一个字符进行匹配,如果没有则一直匹配下去,与贪婪量词刚好相反,惰性量词用上面的简单量词跟一个?表示。


(.*?)是惰性量词 (加个?)

#7


?(/=([\w]*)($|&)  你匹配的是?=123&  ?=123一类的数据  没这样的数据

#8


<script type="text/javascript">
var t = "www.baidu.com\/index.html?name=123&title=456";
alert(t.replace(/([^&=]+)(?=&|$)/g, "'$1'"));

var t = "www.baidu.com\/index.html?name=&title=456";
alert(t.replace(/=([^&]*)(?=&|$)/g, "='$1'"));
</script>

#9


alert(t.replace(/=([^&]*)/g, "='$1'"));
:D

#10


t.replace(/=([^&]*?)/g, "='$1'")  要个?吧

#11


<script type="text/javascript">
/*<![CDATA[*/
 var s = "www.baidu.com/index.html?name=123&title=456";
 alert(s.replace(/(\d+)/g, "'$1'"));
/*]]*/
</script>

#12


这么简单的正则, 大家是不是想得太复杂了...

#13


to mingxuan3000(铭轩)
不要的。。
既然是非&就肯定不会有贪婪的形式。。
URL里所有的特殊字符都会转换成URLCODE


- -
\d....

#14


刚想到

#15


数字太特殊了,参数还有是字母的

#16


竟然有这么多高手反复给我回帖子,真是太意外了.由衷的感谢

#17


少废话...
问题解决了就快结贴...

#1


<SCRIPT LANGUAGE="JavaScript">
var xxx = "www.baidu.com/index.html?name=123&title=456";
var re = /(name\=)([\w]*)(\&)(title\=)([\w]*)/g
xxx = xxx.replace(re,function($0,$1,$2,$3,$4,$5){return $1+'\''+$2+'\''+$3+$4+'\''+$5+'\''});
alert(xxx);
</script>
<body>

</body>

#2


<script>
var strurl="www.baidu.com/index.html?name=1w23&title=4_536";
strurl=strurl.replace(/=([\w]*)($|&)/gi,"='$1'$2");
alert(strurl)
</script>

#3


<script language="javascript">
//alert('')
var a="www.baidu.com/index.html?name=123&title=456"
alert(a.replace(/\=(.*?)(\&|$)/g,"='$1'$2"))
//alert(/^\(\d{3}\)\d{3}\-\d{4}$/.test('(121)123-123'))
</script>

#4


谢谢三位都可以用,我有个疑惑想请教各位,为什么/\=(.*?)(&|$)/g 会得到name='123'&title='456'而/\=(.*)(&|$)/g 或/\=(.*)?(&|$)/g会得到name='123&title=456'呢
?(/=([\w]*)($|&)/gi没有?却可以得到正确结果,究竟正则的匹配是一个怎样的过程呢?

#5


=([\w]*)($|&) 匹配的是=123&(前面和中间的参数)   =456(最后一个参数)之类的
替换后 都替换成='123'&  or   ='456'

#6


1.4.1 简单量词
  ?:出现零次或一次;
  *:出现零次或多次;
  +:出现一次或多次;
  {n}:一定出现n次;
  {n,m}:至少出现n次但不超过m次;
  {n,}:至少出现n次;
1.4.2 贪婪的、惰性的和支配性的量词
  贪婪量词先看整个字符串是不是匹配,如果没有发现匹配,先去掉最后字符串中的最后一个字符,并再次尝试,如果还没有发现匹配,那么再次去掉最后一个字符,这个过程会一直重复下去直到发现匹配或不剩任何字符串,上面的简单量词都是贪婪量词。
  惰性量词先看字符串中的第一个字母是不是一个匹配,如果不匹配则继续读入下一个字符进行匹配,如果没有则一直匹配下去,与贪婪量词刚好相反,惰性量词用上面的简单量词跟一个?表示。


(.*?)是惰性量词 (加个?)

#7


?(/=([\w]*)($|&)  你匹配的是?=123&  ?=123一类的数据  没这样的数据

#8


<script type="text/javascript">
var t = "www.baidu.com\/index.html?name=123&title=456";
alert(t.replace(/([^&=]+)(?=&|$)/g, "'$1'"));

var t = "www.baidu.com\/index.html?name=&title=456";
alert(t.replace(/=([^&]*)(?=&|$)/g, "='$1'"));
</script>

#9


alert(t.replace(/=([^&]*)/g, "='$1'"));
:D

#10


t.replace(/=([^&]*?)/g, "='$1'")  要个?吧

#11


<script type="text/javascript">
/*<![CDATA[*/
 var s = "www.baidu.com/index.html?name=123&title=456";
 alert(s.replace(/(\d+)/g, "'$1'"));
/*]]*/
</script>

#12


这么简单的正则, 大家是不是想得太复杂了...

#13


to mingxuan3000(铭轩)
不要的。。
既然是非&就肯定不会有贪婪的形式。。
URL里所有的特殊字符都会转换成URLCODE


- -
\d....

#14


刚想到

#15


数字太特殊了,参数还有是字母的

#16


竟然有这么多高手反复给我回帖子,真是太意外了.由衷的感谢

#17


少废话...
问题解决了就快结贴...