请教正则这样写"dd$pp".replace(/[\$]/g,"dangdang");

问题描述

正则这样写"dd$pp".replace(/[$]/g,"dangdang");和正则这样写"dd$pp".replace(/[$]/g,"dangdang");是一样的,为什么呢。第二种不标准?

解决方案

解决方案二:
个人是比较推荐第1种,至于标准不标准要纠结干嘛呢。。。
解决方案三:
不管白猫黑猫。。能逮到老鼠的就是好猫。。不要纠结在这些问题上
解决方案四:
引用1楼p2227的回复:

个人是比较推荐第1种,至于标准不标准要纠结干嘛呢。。。

没纠结,以为不转义至少在IE下不通呢,所以问问。thanku.
解决方案五:
引用2楼zsx841021的回复:

不管白猫黑猫。。能逮到老鼠的就是好猫。。不要纠结在这些问题上

呵呵,以为另有玄机呢。
解决方案六:
字符串中的单一''会被浏览器忽略掉(特殊含义除外),若要匹配折号,需指定为‘\’。我觉得你此处用第二种更合理。试试这个:"dd\$pp".replace(/[\$]/g,"dangdang");
解决方案七:
引用5楼happy59的回复:

字符串中的单一''会被浏览器忽略掉(特殊含义除外),若要匹配折号,需指定为‘\’。我觉得你此处用第二种更合理。试试这个:"dd\$pp".replace(/[\$]/g,"dangdang");

楼主的意思是$在正则里面是一个保留的特殊意思字符,当我们就要查找这个字符本身时,要不要在前面加转义。我个人意见是加上比较好,但是具体在这个正则里面[$]也会被解释为这$本身,所以会有一样的效果。你把字符串改了,正则也改了,这完全就不是在讨论这个主题了,已经没意义了。
解决方案八:
哥有资料:2.3.NET正则中字符组的转义在字符组[]中,元字符通常是不需要转义的,甚至于“[”也是不需要转义的。stringtest=@"theteststring:.$^{[(|)*+?";Regexreg=newRegex(@"[.$^{[(|)*+?\]");MatchCollectionmc=reg.Matches(test);foreach(Matchminmc){richTextBox2.Text+=m.Value+"n";}/*--------输出--------.$^{[(|)*+?*/但是在正则书写时,字符组中的“[”还是建议使用“[”对其转义的,正则本身就已经是非常抽象,可读性很低的了,如果在字符组中再掺杂进这样不经转义的“[”,会使得可读性更差。而且在出现不正确的嵌套时,可能会导致正则编译异常,以下正则在编译时就会抛异常的。Regexreg=newRegex(@"[.$^{[(]|)*+?\]");然而,.NET的字符组中,是支持集合减法的,在这种正常语法形式下,是允许字符组嵌套的。stringtest=@"abcdefghijklmnopqrstuvwxyz";Regexreg=newRegex(@"[a-z-[aeiou]]+");MatchCollectionmc=reg.Matches(test);foreach(Matchminmc){richTextBox2.Text+=m.Value+"n";}/*--------输出--------bcdfghjklmnpqrstvwxyz*/这种用法可读性很差,应用也很少见,即使有这种需求也可以通过其它方式实现,了解一下即可,不必深究。话题再回到转义上,字符组中必须转义的只有“”,而“[”和“]”出现在字符组中时,也是建议一定做转义处理的。另外有两个字符“^”和“-”,出现在字符组中特定位置时,如果要匹配其本身,也是需要转义的。“^”出现在字符组开始位置,表示排除型字符组,“[^Char]”也就是匹配除字符组中包含的字符之外的任意一个字符,比如“[^0-9]”表示除数字外的任意一个字符。所以在字符组中,要匹配“^”字符本身,要么不放在字符组开始位置,要么用“^”进行转义。Regexreg1=newRegex(@"[0-9^]");Regexreg2=newRegex(@"[^0-9]");这两种方式都表达匹配任意一个数字或普通字符“^”。至于“-”在字符组中特殊性,举一个例子。stringtest=@"$";Regexreg=newRegex(@"[#-*%&]");richTextBox2.Text="匹配结果:"+reg.IsMatch(test);/*--------输出--------匹配结果:True*/正则表达式中明明没有“$”,为什么匹配结果会是“True”呢?[]支持用连字符“-”连接两个字符,来表示一个字符范围。需要注意的是,“-”前后的两个字符是有顺序的,在使用相同的编码时,后面的字符码位应大于或等于前面字符的码位。for(inti='#';i<='*';i++){richTextBox2.Text+=(char)i+"n";}/*--------输出--------#$%&'()**/由于“#”和“*”符合要求,“[#-*]”可以表示一个字符范围,其中就包含了字符“$”,所以上面的正则是可以匹配“$”的,如果只是把“-”当作一个普通字符处理,那么要么换个位置,要么把“-”转义。Regexreg1=newRegex(@"[#*%&-]");Regexreg2=newRegex(@"[#-*%&]");这两种方式都表示匹配字符组中列举的字符中的任意一个。在字符组中,还有一个比较特殊的转义字符,“b”出现在正则表达式中一般位置时,表示单词边界,也就是一侧为组成单词的字符,另一侧不是;而当“b”出现在字符组中时,表示的是退格符,与普通字符串中出现的“b”意义是一样的。同样的,还有一个容易被忽视,而且经常被忽视的转义符“|”,当“|”出现在正则表达式中一般位置时,表示左右两侧“或”的关系;而当“|”出现在字符组中时,它仅仅表示“|”字符本身,没有任何特殊意义,所以如果不是要匹配“|”本身,而试图在字符组中使用“|”时,是错误的。比如正则表达式“[a|b]”表示的是“a”、“b”、“|”中的任意一个,而不是“a”或“b”。

时间: 2024-10-26 02:14:43

请教正则这样写&amp;quot;dd$pp&amp;quot;.replace(/[\$]/g,&amp;quot;dangdang&amp;quot;);的相关文章

java-判断用户名字符串的问题,怎么用正则表达式和非正则表达写呢

问题描述 判断用户名字符串的问题,怎么用正则表达式和非正则表达写呢 用户名只能包含字母.数字和下划线,并且首字母只能为字母,用户名最短不能少于6个字符,最长不能超过20个字符, 解决方案 如楼上一样.d表示匹配数字,但这个选项并非所有环境都支持.建议使用0-9表示数字. /^[a-z][a-z_0-9]{5,19}$/i 正则主体为 ^[a-z][a-z_0-9]{5,19}$ i 表示忽略大小写,如果你的环境不支持 i 选项,可将字母写完,如下所示 ^[a-zA-Z][a-zA-Z_0-9]{

请教用VS2008写的在wince下的串口程序

问题描述 请教用VS2008写的在wince下的串口程序,用串口调试工具收发都正常,但是和单片机M16连接看不到的字符.M16单片机发送的字符用串口调试工具,发送是正常啊 解决方案 解决方案二:友情帮顶下!顺便学习学习!解决方案三:帮顶,原来研究过WINCE,但是不够深入解决方案四:俺也要写CE程序了,解决方案五:该回复于2010-12-01 13:15:41被版主删除解决方案六:求一个WINCE下的串口调试工具~~看到网上有很多,就是下载不了,急~~~麻烦有的能给我发一个吗~~64904840

这样的正则怎么写啊!

问题描述 这样的正则怎么写啊!怎么才能获取到下面的湖南地图湖南电视湖南电视台<TR><TD><Ahref="http://index.baidu.com/main/word.php?word=%BA%FE%C4%CF%B5%D8%CD%BC">湖南地图</A></TD><TD>624 <SPANclass=up>↑ +11%</SPAN></TD><TD>0 <

这样的正则怎么写啊!获取标题和URL

问题描述 这样的正则怎么写啊!获取标题和URL获取标题和连接杨若兮公开情感故事称和刘威"可以做朋友"http://www.hljnews.cn/xw_whyl/system/2008/02/01/010117839.shtml感人至深的男女情感故事http://gentleman.zgjrw.com/News/2008129/man/219847457600.html<SPAN>• <Ahref="http://www.hljnews.cn/xw_whyl/

请教高手,如何写lotusScript代码,在同一VIEW中累加几个文档的同一域的值

问题描述 公司每个职员的年假是10天,当一个职员申请年假时,第一次申请3天,第二次5天,当第三次申请4天并且SAVE时,系统提示你申请的天数已经超过10天.所以我要在FORM的QuerySave中写下这样的代码来提示,现在的问题是怎样把VIEW中以前申请的两个文档的天数与当前文档的天数相加.请教各位高手,谢谢了! 解决方案 解决方案二:你可以在代理里面把以前保存在文档里面的数据提取出来,三个数据累加,然后再进行判断就OK啦解决方案三:如楼上所说,不过是怎么实现的问题,有速度快的方法,有速度慢的方

c#-C# winform项目,退出应用程序时,报&amp;amp;quot;集合已修改,可能无法执行枚举操作。&amp;amp;quot;错误信息。

问题描述 C# winform项目,退出应用程序时,报"集合已修改,可能无法执行枚举操作."错误信息. 在C# winform项目中,有两个form窗体(form1.form2),在form1中有个两个button按钮. 在form1窗体中,点击button1弹出一个form2窗体,点击button2退出整个应用程序. 目前遇到的问题是,在form1窗体中点击button1弹出一个form2窗体后再点击button2退出整个应用程序时,报"集合已修改,可能无法执行枚举操作.&

像&amp;amp;quot;Sun, 22 Feb 2009 10:05:38 +0000 (GMT)&amp;amp;quot;的时间戳怎样转换为DateTime类型

问题描述 我做的一个从pop3上下载邮件的程序,想把里面的时间转换为DateTime类型.问题如题. 解决方案 解决方案二:DataTimetime=DateTime.parse("Sun,22Feb200910:05:38+0000(GMT)").toshortTime();不行吗?解决方案三:这个貌似不是RFC1123Pattern的.转不了.得自己写iformatproviderSun,22Feb200910:05:38GMT这个格式可以转.解决方案四:一楼前辈的这种方法不可以,

调试MVC源代码时&amp;quot;[A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换为 ...&amp;quot;解决办法

1.出错页面提示: "/"应用程序中的服务器错误. [A]System.Web.WebPages.Razor.Configuration.HostSection 无法强制转换为 [B]System.Web.WebPages.Razor.Configuration.HostSection.类型 A 源自"System.Web.WebPages.Razor, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad36

sql = &amp;amp;quot;select top 1 * from T_Movie where Projection &amp;amp;gt;&amp;amp;quot;+time+&amp;amp;quot;order by Projecti

问题描述 也已经定义了time,publicstringtime=System.DateTime.Now.ToString("yyyy年MM月dd日");但运行提示异常详细信息:System.Exception:'年11月24日order'附近有语法错误.请问哪位大侠能帮帮我这个菜鸟看看,语句存在什么问题,如果我需要显示比当前时间大的记录呢?灰常感谢啦,麻烦啦 解决方案 解决方案二:参数格式化不要带中文进去publicstringtime=System.DateTime.Now.ToS