首页
新闻
论坛
群组
Blog
文档
下载
读书
Tag
网摘
搜索
.NET
Java
游戏
视频
人才
外包
培训
数据库
书店
程序员
欢迎您:
游客
| 退出
| 登录
注册
帮助
我的帖子
我参与的帖子
我的空间
我的网摘
CSDN
CSDN社区
Web 开发
JavaScript
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
生成帖子
置顶
推荐(加精)
取消推荐(加精)
锁定帖子
移动帖子
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
求助 一个JS 字符串替换正则表达式 的分析?
[已结贴,结贴人:iamluda]
加为好友
发送私信
在线聊天
iamluda
路大
等级:
发表于:
2008-05-10 08:40:07
楼主
有如下的一个字符串替换的正则表达式
s.replace(/&/g,"&").replace(/ </g,"<").replace(/>/g,">").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");
这个字符串替换表达式中嵌套了3个replace,整个字符串替换的含义是什么?如何分析这个字符串替换的正则表达式?
问题点数:
100
回复次数:
12
显示所有回复
显示星级回复
显示楼主回复
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
junp2007
junp
等级:
发表于:
2008-05-10 09:15:01
1
楼 得分:
20
s.replace(/&/g,"&")//替换字符串s中的&为&
replace(/ </g,"<")//替换字符串中的 <为<
replace(/>/g,">")//替换字符串中的>为>
replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1"); 匹配 \ . * [ ] ( ) $ ^ 字符,$1是对匹配的字符的引用。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
chenhongxin
网工《J2EE菜鸟版》
等级:
发表于:
2008-05-10 09:26:51
2
楼 得分:
20
s.replace(/&/g,"&")//替换字符串s中的&为&
replace(/ </g,"<")//替换字符串中的 <为<
replace(/>/g,">")//替换字符串中的>为>
replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1"); 匹配 \ . * [ ] ( ) $ ^ 字符,$1是对匹配的字符的引用。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
jhwcd
王东
等级:
发表于:
2008-05-10 09:53:45
3
楼 得分:
20
引用 1 楼 junp2007 的回复:
s.replace(/&/g,"&")//替换字符串s中的&为&
replace(/ </g,"<")//替换字符串中的 <为<
replace(/>/g,">")//替换字符串中的>为>
replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1"); 匹配 \ . * [ ] ( ) $ ^ 字符,$1是对匹配的字符的引用。
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
r_swordsman
取什么样的昵称才有个性又能显示出来而且不能太长?
等级:
发表于:
2008-05-10 11:37:20
4
楼 得分:
20
引用楼主 iamluda 的帖子:
有如下的一个字符串替换的正则表达式
s.replace(/&/g,"&").replace(/ </g,"<").replace(/>/g,">").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");
这个字符串替换表达式中嵌套了3个replace,整个字符串替换的含义是什么?如何分析这个字符串替换的正则表达式?
replace(/&/g,"&") // 将 & 替换为 &
replace(/ </g,"<") // 将 < 替换为 <
replace(/>/g,">") // 将 > 替换为 >
replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1") // 将 \ . * [ ] ( ) $ ^ 这些字符转义,即前面加上 \
即 \ 变成 \\
即 . 变成 \.
即 * 变成 \*
即 [ 变成 \[
即 ] 变成 \]
即 ( 变成 \(
即 ) 变成 \)
即 $ 变成 \$
即 ^ 变成 \^
即一个字符会被替换为 2 个字符
由于 JS 字符 \ 会被转义为 \\
所以你在字符串中的 \ 将是 \\
所以你在字符串中的 \\ 将是 \\\\
所以你在字符串中的 \. 将是 \\.
所以你在字符串中的 \* 将是 \\*
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
chinmo
藏*无限
等级:
发表于:
2008-05-10 11:53:12
5
楼 得分:
20
s.replace(/&/g,"&").replace(/ </g,"<").replace(/>/g,">").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");
这个如果替换的顺序
replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1"); 匹配 \ . * [ ] ( ) $ ^ 字符,$1是对匹配的字符的引用
replace(/>/g,">") // 将 > 替换为 >
replace(/ </g,"<") // 将 < 替换为 <
replace(/&/g,"&") // 将 & 替换为 &
以上就是替换顺序与解析
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
cylot
Leon Chen
等级:
发表于:
2008-05-10 17:00:00
6
楼 得分:
0
一楼正解
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
iamluda
路大
等级:
发表于:
2008-05-14 16:54:39
7
楼 得分:
0
下面这个 字符串替换的正则表达式
return s.replace(/\\([\\\.\*\[\]\(\)\$\^])/g,"$1").replace(/>/g,">").replace(/</g," <").replace(/&/g,"&");
是否和
s.replace(/&/g,"&").replace(/ </g,"<").replace(/>/g,">").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");
的过程是相反的
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
chinmo
藏*无限
等级:
发表于:
2008-05-14 17:21:00
8
楼 得分:
0
不一定相反啊,只是替换顺序不同而已
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
iamluda
路大
等级:
发表于:
2008-05-14 17:49:24
9
楼 得分:
0
如果一个字符串经过
s.replace(/&/g,"&").replace(/ </g,"<").replace(/>/g,">").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");替换
然后在经过
s.replace(/\\([\\\.\*\[\]\(\)\$\^])/g,"$1").replace(/>/g,">").replace(/</g," <").replace(/&/g,"&");
能还原吗?
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
junp2007
junp
等级:
发表于:
2008-05-14 22:32:53
10
楼 得分:
0
咋都不喜欢动手
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
lawrendc
蜗牛也是牛
等级:
发表于:
2008-05-15 08:23:15
11
楼 得分:
0
hehe
修改
删除
举报
引用
回复
加为好友
发送私信
在线聊天
chinmo
藏*无限
等级:
发表于:
2008-05-15 08:52:37
12
楼 得分:
0
引用 9 楼 iamluda 的回复:
如果一个字符串经过
s.replace(/&/g,"&").replace(/ </g,"<").replace(/>/g,">").replace(/([\\\.\*\[\]\(\)\$\^])/g,"\\$1");替换
然后在经过
s.replace(/\\([\\\.\*\[\]\(\)\$\^])/g,"$1").replace(/>/g,">").replace(/</g," <").replace(/&/g,"&");
能还原吗?
当然可以
你把替换的符号反过来就是了
修改
删除
举报
引用
回复
将帖子提前
放进我的网摘
推荐给好友
我要提问
帖子加分
结贴去...
管理菜单
页面风格切换
标准风格
老版本论坛
网站简介
-
广告服务
-
网站地图
-
帮助
-
联系方式
-
诚聘英才
-
English
-
问题报告
世纪乐知(北京)网络技术有限公司 版权所有 京 ICP 证 020026 号
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
abc推荐给好友