javascript - js正则替换,如何只替换匹配的到的字符串中的一部分
天蓬老师
天蓬老师 2017-04-10 15:40:22
[JavaScript讨论组]

segmentfault怎么了,为什么我的问题只显示第一行,下面是问题的截图

以下是匹配到的是一个数组,index为1的那个是要替换掉的内容

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回复(3)
PHP中文网

应该是记录fid前面的(?或者&)符号下来,replace的时候拼接上

'?cfid=operation&fid=2df&a=flockBBS'.replace(/([&?])fid\=[\s\S]*?(?=&)/i,'$1a=111')

使用i之匹配第一个,如果你要一次改所有的,换成g就行

巴扎黑

好吧,直接用正则分3个组好了,不知道有没有更好的方法?

'?fid=2df&c=operation&a=flockBBS'.replace(/(.*[\?\&])(fid\=[^\&\#]*)(.*)/i,'$1fid=324$3')
阿神

就你这个需求而言,下面这样就可以满足:

'?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% 无漏洞吗?不一定!但是他可以满足你的这个需求,这就够了。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号