一个正则问题 alert(/([0-9]+)(-?)([0-9]+)/.test("021-sfdfdf"));alert(RegExp.$1);alert(RegExp.$2);alert(RegExp.$3);我想返回结果是false,但怎么是true呢,$1,$2,$3的结果也很奇怪 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 true021正则会像正确的匹配所以([0-9]+)匹配到了02(-?)匹配到了空([0-9]+)匹配到了1021就已经完成匹配了弹出的结果页是正确的 alert(/^([0-9]+?)(-?)([0-9]+?)$/.test("021-sdf"));匹配开始和结束,另外使用非贪婪模式 正则表达会匹配所有正确的alert("021-sfdfdf".match(/([0-9]+)(-?)([0-9]+)/));碰到这样的问题,直接这样就可以看出你匹配出来的是什么,很容易纠错。RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个子匹配字符串,以此类推var r= /^(\d{4})-(\d{1,2})-(\d{1,2})$/; //正则表达式 匹配出生日期(简单匹配) r.exec('1988-10-10');s1=RegExp.$1;s2=RegExp.$2;s3=RegExp.$3;alert(s1+" "+s2+" "+s3)//结果为1988 10 10 首先你的alert(/([0-9]+)(-?)([0-9]+)/.test("021-sfdfdf"));按你意思应该是alert(/^([0-9]+)(-?)([0-9]+)$/.test("021-sfdfdf"));其次回答一下你这句为什么匹配到2就停了呢,在没有指定非贪婪的情况下,+号或*号应该最大匹配才对呀021-sfdfdf([0-9]+)(-?)([0-9]+)0-9+尽可能多的匹配,结果021,然后发现-,不是0-9范围的,匹配结束,尝试后面的(-?)匹配到了-,匹配成功,继续,发现时s不是-,因为前面[0-9]+,这个贪婪模式,是允许回溯的,所以,这里产生回溯,回到上一个0-9的状态匹配点[0-9]+匹配02,(-?)尝试匹配1失败,因为允许回溯0或1次,所以继续查看后续表达式,([0-9]+)可以捕获到1了。回溯,-?匹配0次。最终结果就是([0-9]+) -> 02(-?) -> 匹配0次([0-9]+) -> 1 请教一个正则:匹配含有某个字符串的<div>标签 这个JS不支持火狐和谷歌? 请教,跪求一段JS投票代码 js中或(||)运算符的问题 insertBefore 100分求:JS计算24点算法中所有无解的情况 (为避免分数浪费,得解后加至100分) 求 javascript 字符替换 函数 急!关于表单的问题 下面的javacript函数什么意思啊? 各位大侠帮帮忙——————我想实现在同一页的基础上生成一些表单组件 在js中如何将GB2312字符集和UTF-8字符集,两者通用的转换函数,急~~~~~~~~ 关于js代码的写法问题???
021正则会像正确的匹配所以([0-9]+)匹配到了02
(-?)匹配到了空
([0-9]+)匹配到了1021就已经完成匹配了弹出的结果页是正确的
alert(/^([0-9]+?)(-?)([0-9]+?)$/.test("021-sdf"));匹配开始和结束,另外使用非贪婪模式
RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个子匹配字符串,以此类推var r= /^(\d{4})-(\d{1,2})-(\d{1,2})$/; //正则表达式 匹配出生日期(简单匹配)
r.exec('1988-10-10');
s1=RegExp.$1;
s2=RegExp.$2;
s3=RegExp.$3;
alert(s1+" "+s2+" "+s3)//结果为1988 10 10
alert(/([0-9]+)(-?)([0-9]+)/.test("021-sfdfdf"));
按你意思应该是
alert(/^([0-9]+)(-?)([0-9]+)$/.test("021-sfdfdf"));其次回答一下你这句
为什么匹配到2就停了呢,在没有指定非贪婪的情况下,+号或*号应该最大匹配才对呀
021-sfdfdf
([0-9]+)(-?)([0-9]+)
0-9+尽可能多的匹配,结果021,然后发现-,不是0-9范围的,匹配结束,尝试后面的
(-?)匹配到了-,匹配成功,继续,发现时s不是-,因为前面[0-9]+,这个贪婪模式,是允许回溯的,所以,这里产生回溯,回到上一个0-9的状态匹配点
[0-9]+匹配02,(-?)尝试匹配1失败,因为允许回溯0或1次,所以继续查看后续表达式,([0-9]+)可以捕获到1了。回溯,-?匹配0次。最终结果就是
([0-9]+) -> 02
(-?) -> 匹配0次
([0-9]+) -> 1