日期:2014-05-16  浏览次数:20398 次

那个大神能指导个正则
智能输入四位数字或,四位数字区间,如:2000,或2000-3000。,谢谢,
------解决方案--------------------
2000+parseInt(Math.random()*1000)
不是很明白你的意思
------解决方案--------------------
/^(2\d{3}
------解决方案--------------------
3000)$/
------解决方案--------------------
/\d{4}(-\d{4})?/
------解决方案--------------------
var reg = new RegExp("^\\d{4}$
------解决方案--------------------
(^\\d{4}-\\d{4}$)","g"); 
reg.test("4000-8866");
reg.test("4000")
reg.test("400")
------解决方案--------------------
引用:
/\d{4}(-\d{4})?/

这种方式/\d{4}(-\d{4})?/.test("4000-1")也匹配成功了
------解决方案--------------------
引用:
Quote: 引用:

/\d{4}(-\d{4})?/

这种方式/\d{4}(-\d{4})?/.test("4000-1")也匹配成功了

那是匹配了4000

var $a = /^\d{4}(-\d{4})?$/.test("4000-1")
------解决方案--------------------
单个正则貌似很难,组合形式的是否有兴趣

function numValidate(str){
var temp = /^([2-9]\d{3})(?:-([2-9]\d{3}))?$/.exec(str);
if(!temp)return false;
if(!temp[2])return true;
return Number(temp[2]) > Number(temp[1]);
}

numValidate("2222-1111") //false
numValidate("1111") //false
numValidate("2000") //true
numValidate("2000-2001") //true
numValidate("2001-2000") //false

------解决方案--------------------
引用:
Quote: 引用:

/^(2\d{3}
------解决方案--------------------
3000)$/
不好意思没表达清楚,文本框输入范围是2000-9999,可以输2001 也可以输入2300-5454,5454要比2300大

就是这个啊
var reg = new RegExp("^\\d{4}$
------解决方案--------------------
(^\\d{4}-\\d{4}$)","g"); 
 reg.test("4000-8866");
 reg.test("4000")
 reg.test("400") 
你直接写个页面把这个代码运行一遍就知道了,前两个返回TRUE最后一个返回false,但是没办法匹配4200-1123这种,在正则表达式里面貌似没办法判断大小,所以无能为力,但是基本格式可以满足