求一javascript正则表达式

ccb8888 2008-12-08 05:46:17
例如我有一窜数字
var s = '123456';
注意的是,这窜数字有6位,我只要45;
我自己写的一条正则是:/(?=\d\d)\d+(?=\d)/gi
可是他匹配了12345,明显?=在前面没有用的
...全文
89 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
root_ 2008-12-08
  • 打赏
  • 举报
回复
javascript中是不支持(?<=Exp)和(?<!Exp)的
javascript中是支持(?=Exp)和(?!Exp),但是对(?=Exp)的支持并不好,有些场合会有意外的结果,而对(?!Exp)的支持却非常好,目前没有发现bug

/(?=\d\d)\d+(?=\d)/gi
楼主的正则,前面的(?=\d\d)并没有起到楼主需要的效果,(?=Exp)是对所在位置右侧加一个附加条件,它并不实际匹配任何内容,所以是零宽度的,并不会占据两个字符的宽度
root_ 2008-12-08
  • 打赏
  • 举报
回复
楼主举的这个例子并不能很好的说明问题
况且我在楼主的上一个帖子里已经给出一种方法了,只要稍稍变通一下就可以了
求一JAVASCRIPT正则表达式



<script type="text/javascript">
var s = '123456';
alert(s.match(/^\d\d\d(\d\d)/)[1]);
</script>


这里用的正则表达式是^\d\d\d(\d\d),而不是^\d{3}(\d{2}),是因为前者的匹配效率更高,不过如果仅仅是类似于楼主给的例子这样的问题,倒是不用考虑效率问题
ccb8888 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 ojlovecd 的回复:]
引用 3 楼 ccb8888 的回复:



既然这样有必要用到正则吗?
JScript code

var str = "123456";
var result = str.substring(3,5);
alert(result);



[/Quote]
这个只不过是一个简单的例子而已,我只是想如何截取中间的字符窜,c#正则中可以用?<=以及?=这个规则来匹配中间你所需要的字符窜,但是javascript正则中我没有找到像c#正则中的?<=这个功能的用法,所以特意上来求解!
我姓区不姓区 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 ccb8888 的回复:]

[/Quote]
既然这样有必要用到正则吗?

var str = "123456";
var result = str.substring(3,5);
alert(result);

forgetsky_zq 2008-12-08
  • 打赏
  • 举报
回复
(?<=^\d{3})\d{2}
财富实验室 2008-12-08
  • 打赏
  • 举报
回复
^(\d)(\d)(\d)(\d)(\d)取$4和$5就ok了!
一品梅 2008-12-08
  • 打赏
  • 举报
回复
[Quote=引用楼主 ccb8888 的帖子:]
例如我有一窜数字
var s = '123456';
注意的是,这窜数字有6位,我只要45;
我自己写的一条正则是:/(?=\d\d)\d+(?=\d)/gi
可是他匹配了12345,明显?=在前面没有用的
[/Quote]
?=,这是右侧,即匹配方的右侧存在某...
止戈而立 2008-12-08
  • 打赏
  • 举报
回复
(?<=^\d{3})\d{2}
ccb8888 2008-12-08
  • 打赏
  • 举报
回复
自己顶
ccb8888 2008-12-08
  • 打赏
  • 举报
回复
我姓区不姓区 2008-12-08
  • 打赏
  • 举报
回复
规律是什么?就取第四和第五个字符?
ccb8888 2008-12-08
  • 打赏
  • 举报
回复
自己顶!

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧