我初学正则,常看别人的例子,有一些问题,希望大家能帮帮忙:1:去除重复的字符
str="1:2,1:3,1:4,2:3,2:5,2:6,3:1,4:3,1:2,1:4,1:6,1:2,1:2,1:3"
reg=/([\d]:[\d])([^\1]*),\1/
问题是:[^\1] 到底代表了什么字符,好像什么都能替代,我试了很多次也找不出来2:元字符在RegExp对象中的使用方法
var key= "<a href='http://bbs.test.com/read.php?tid=100'>××××××××</a></br>"
var reg2=/<a[^<>]*[^<>]*>(?:(?!<\/?a><\/br>)[\s\S])*<\/a><\/br>/gi
问题:我用这个字面量的正则可以查找替换,但我把正则定义为RegExp("....","")形式就替换不了了,我想应该是元字符的问题,但不清楚怎么修改?3:奇怪的问题
正则的目的是有12个字符并包含caat字符串的单词
var reg1=/\b(?=\w{12}\b)\w*caat\w*/gi;
var s1="abcdefgacaat";
var s2="123caatadfaf";
var s3="adsfcaatad1a";
var s4=" vdsacaata_d";
alert(reg1.test(s1));
alert(reg1.test(s2));
alert(reg1.test(s3));
alert(reg1.test(s4));
我希望用alert的方式看结果,可在字符串匹配的情况下alert方式为“true”,
“false”,“true”,“false”,请问这是什么问题?
十分感谢!
str="1:2,1:3,1:4,2:3,2:5,2:6,3:1,4:3,1:2,1:4,1:6,1:2,1:2,1:3"
reg=/([\d]:[\d])([^\1]*),\1/
问题是:[^\1] 到底代表了什么字符,好像什么都能替代,我试了很多次也找不出来2:元字符在RegExp对象中的使用方法
var key= "<a href='http://bbs.test.com/read.php?tid=100'>××××××××</a></br>"
var reg2=/<a[^<>]*[^<>]*>(?:(?!<\/?a><\/br>)[\s\S])*<\/a><\/br>/gi
问题:我用这个字面量的正则可以查找替换,但我把正则定义为RegExp("....","")形式就替换不了了,我想应该是元字符的问题,但不清楚怎么修改?3:奇怪的问题
正则的目的是有12个字符并包含caat字符串的单词
var reg1=/\b(?=\w{12}\b)\w*caat\w*/gi;
var s1="abcdefgacaat";
var s2="123caatadfaf";
var s3="adsfcaatad1a";
var s4=" vdsacaata_d";
alert(reg1.test(s1));
alert(reg1.test(s2));
alert(reg1.test(s3));
alert(reg1.test(s4));
我希望用alert的方式看结果,可在字符串匹配的情况下alert方式为“true”,
“false”,“true”,“false”,请问这是什么问题?
十分感谢!
解决方案 »
- 关于JQuery-easyui的form的提交问题,返回的数据是乱码,怎么解决?
- 一个比较偏的javascript问题,求大神。
- 人人网底部工具栏的奥秘在哪?
- 怎样让这个兼容IE6/7和FF
- 请问JS页面跳转参数编码 window.open ('Default2.aspx?id=001');
- Extjs重写Ext.Panel遇到的问题,各位老大帮忙!困惑我好长时间了,谢谢了
- 怎么在js树里添加单机事件
- JS高手帮忙啊!!!!!
- 急!javascript这个问题怎么解决?
- 我想让Table中的各边框显示为黑细线,如同word中画出的效果,style如何写?
- 求助各位高手,有个问题想问一下,谢谢大家帮个忙
- 如何使页面中的表格或层不服从页面的统一的CSS样式?
var s = "wwc";
alert(/(.)[^\1]/.exec(s));
alert(/(.)(?!\1)./.exec(s));
</script>
这个语查不如期待。
并且第一个。。结果也不如期待。。
伤心中。。
这样的取值判断下到是可以达到效果。。不过好麻烦的说。。
好想只编译一次的话,第2个匹配接着第1次匹配的结果进行的,具体的还在查,忘了在哪看过了http://community.csdn.net/Expert/TopicView3.asp?id=5416975这上面的当时我也遇到这样的情况,在每次调用前在重新编译下就行var s1="abcdefgacaat";
var s2="123caatadfaf";
var s3="adsfcaatad1a";
var s4=" vdsacaata_d";
var reg1=/\b(?=\w{12}\b)\w*caat\w*/gi;
alert(reg1.test(s1));
var reg1=/\b(?=\w{12}\b)\w*caat\w*/gi;
alert(reg1.test(s2));
解决的办法还是上面的:每次调用前在重新编译下
仔细看看下文
http://www.chiqiang.com/logs/2006/11/3785992.html
我把关键的地方烤下来:
1。 假如你的正则表达式使用了"g"标记,你可以多次使用exec 方法来连续匹配相同的串。当你这样做
的时候,新的匹配将从由正则表达式的lastIndex 属性值确定的子串中开始。(test一样的方法)2。
RegExp的属性 在javascript 1.2, NES 3.0以上版本提供
描述:lastIndex 是个别的正则表达式对象的属性。 这个属性只有当正则表达式的"g"标记被使用以进行全串匹配的时候才被设置。实行以下规则:
如果lastIndex大小字符串的长度,regexp.test和regexp.exec失败,且lastIndex被设为0。
如果lastIndex等于字串的长度且正则表达式匹配空字符串,则正则表达式从lastIndex的位置开始匹配。
如果lastIndex等于字符串的长度且正则表达式不匹配空字符串,则正则表达式不匹配input,且lastIndex被置为0。
否则,lastIndex被设置成最近一次匹配的下一点。举例var bbb=/[a-z\u4e00-\u9fa5]{2,}/gi
alert(bbb.test("aaaaaa"))
alert(bbb.lastIndex)
//var bbb=/[a-z\u4e00-\u9fa5]{2,}/gi
alert(bbb.test("中中aa中中"))
alert(bbb.lastIndex)
//var bbb=/[a-z\u4e00-\u9fa5]{2,}/gi
alert(bbb.test("aaa中aa"))
alert(bbb.lastIndex)
这个与上面的区别在于第2个的长度,比6大多了,可以匹配到true
var bbb=/[a-z\u4e00-\u9fa5]{2,}/gi
alert(bbb.test("aaaaaa"))
alert(bbb.lastIndex)
//var bbb=/[a-z\u4e00-\u9fa5]{2,}/gi
alert(bbb.test("中中aa中中中中中中"))
alert(bbb.lastIndex)
//var bbb=/[a-z\u4e00-\u9fa5]{2,}/gi
alert(bbb.test("aaa中aa"))
alert(bbb.lastIndex)