佚名通过本文主要向大家介绍了js正则匹配字符串,js正则截取字符串,js字符串正则表达式,js正则替换字符串,js字符串部分替换等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:js正则替换,如何只替换匹配的到的字符串中的一部分
描述:
解决方案1:
描述:
segmentfault怎么了,为什么我的问题只显示第一行,下面是问题的截图
以下是匹配到的是一个数组,index为1的那个是要替换掉的内容
解决方案1:
就你这个需求而言,下面这样就可以满足:
'?fid=2df&c=operation&a=flockBBS'.replace(/fid=.+?(?=&)/, 'fid=324')
下面这个更好些:
'?fid=2df&c=operation&a=flockBBS'.replace(/fid=[^&]+/, 'fid=324')
个人认为,代码还是要根据具体的需求来,如果 url 中确实会出现你评论中所说的cfid
,那可以改成下面这样:
'?cfid=operation&fid=2df&a=flockBBS'.replace(/([?&])fid=[^&]+/, '$1fid=324')
上面的代码可以保证 100% 无漏洞吗?不一定!但是他可以满足你的这个需求,这就够了。
解决方案2:好吧,直接用正则分3个组好了,不知道有没有更好的方法?
'?fid=2df&c=operation&a=flockBBS'.replace(/(.*[\?\&])(fid\=[^\&\#]*)(.*)/i,'$1fid=324$3')
解决方案3:应该是记录fid前面的(?或者&)符号下来,replace的时候拼接上
'?cfid=operation&fid=2df&a=flockBBS'.replace(/([&?])fid\=[\s\S]*?(?=&)/i,'$1a=111')
使用i之匹配第一个,如果你要一次改所有的,换成g就行