14 个解决方案
#1
使用正则表达式,就可以:
测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
lz 所说滴闰月属于逻辑判断,而正则表达式仅仅是字符串匹配,因此要靠写函数判断!
测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
lz 所说滴闰月属于逻辑判断,而正则表达式仅仅是字符串匹配,因此要靠写函数判断!
#2
//楼主为啥不用日历控件呢?
<script type="text/javascript">
<!--
var reg=/^(?:(?:(?:(?:(?:1[6-9]|[2-9][0-9])?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))([-/.])(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9][0-9])?[0-9]{2})([-/.])(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[13-9]|1[0-2])\2(?:29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1[0-9]|2[0-8]))))$/;
alert(reg.test("2008-02-03"))
alert(reg.test("2009/02/28")) // 28天为true
alert(reg.test("2009/02/29")) // 29为false
//-->
</script>
#3
哦。谢谢。不过有类似的函数吗
#4
#2 滴正则够狠,穷举法!
基本格式检查
L@_@K
基本格式检查
L@_@K
// yyyy: 1000-2999
// MM: 01-12
// dd: 01-31
var regyyyyMMdd = /^[12]\d{3}(0\d|1[0-2])([0-2]\d|3[01])$/;
document.write("20091021", ": ", regyyyyMMdd.test("20091021"), "<br />");
document.write("20093121", ": ", regyyyyMMdd.test("20093121"), "<br />");
document.write("20091321", ": ", regyyyyMMdd.test("20091321"), "<br />");
document.write("20090331", ": ", regyyyyMMdd.test("20090331"), "<br />");
document.write("20090332", ": ", regyyyyMMdd.test("20090332"), "<br />");
#5
有日历控件,但是也可以入力的。谢谢先。试下。。。。。。。
#6
麻烦再帮下忙呗。我只要yyyyMMdd格式的。谢谢啦
#7
这样的好像判断不出来闰月吧。。。
#8
<script type="text/javascript">
<!--
var reg=/^(?:(?:(?:(?:(?:1[6-9]|[2-9][0-9])?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))()(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9][0-9])?[0-9]{2})()(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[13-9]|1[0-2])\2(?:29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1[0-9]|2[0-8]))))$/;
alert(reg.test("20080203"))
alert(reg.test("2009/02/28")) // 28天为true
alert(reg.test("20090229")) // 29为false
//-->
</script>
#9
配合格式检查可以做到
L@_@K
function validateDateStr(yyyyMMdd)
{
// yyyy: 1000-2999
// MM: 01-12
// dd: 01-31
var reg = /^([12]\d{3})(0\d|1[0-2])([0-2]\d|3[01])$/;
if (reg.test(yyyyMMdd))
{
var arr = reg.exec(yyyyMMdd);
var d = new Date(parseInt(arr[1]), parseInt(arr[2])-1, parseInt(arr[3]));
return (d.getMonth()+1)==parseInt(arr[2]) && d.getDate()==parseInt(arr[3]);
}
else
return false;
}
document.write("20091021", ": ", validateDateStr("20091021"), "<br />");
document.write("20093121", ": ", validateDateStr("20093121"), "<br />");
document.write("20091321", ": ", validateDateStr("20091321"), "<br />");
document.write("20090331", ": ", validateDateStr("20090331"), "<br />");
document.write("20090332", ": ", validateDateStr("20090332"), "<br />");
document.write("20090229", ": ", validateDateStr("20090229"), "<br />");
document.write("20080229", ": ", validateDateStr("20080229"), "<br />");
document.write("20080230", ": ", validateDateStr("20080230"), "<br />");
#10
高手。结贴
#11
同样感谢。
#12
把闰月也考虑进去?
楼主太强了,正则表达式不具有任何的数学计算功能。
楼主太强了,正则表达式不具有任何的数学计算功能。
#13
2楼真强!!!佩服佩服!!!
#14
#1
使用正则表达式,就可以:
测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
lz 所说滴闰月属于逻辑判断,而正则表达式仅仅是字符串匹配,因此要靠写函数判断!
测试字符串的某个模式。例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用卡号码模式。这称为数据有效性验证。
替换文本。可以在文档中使用一个正则表达式来标识特定文字,然后可以全部将其删除,或者替换为别的文字。
根据模式匹配从字符串中提取一个子字符串。可以用来在文本或输入字段中查找特定文字。
lz 所说滴闰月属于逻辑判断,而正则表达式仅仅是字符串匹配,因此要靠写函数判断!
#2
//楼主为啥不用日历控件呢?
<script type="text/javascript">
<!--
var reg=/^(?:(?:(?:(?:(?:1[6-9]|[2-9][0-9])?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))([-/.])(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9][0-9])?[0-9]{2})([-/.])(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[13-9]|1[0-2])\2(?:29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1[0-9]|2[0-8]))))$/;
alert(reg.test("2008-02-03"))
alert(reg.test("2009/02/28")) // 28天为true
alert(reg.test("2009/02/29")) // 29为false
//-->
</script>
#3
哦。谢谢。不过有类似的函数吗
#4
#2 滴正则够狠,穷举法!
基本格式检查
L@_@K
基本格式检查
L@_@K
// yyyy: 1000-2999
// MM: 01-12
// dd: 01-31
var regyyyyMMdd = /^[12]\d{3}(0\d|1[0-2])([0-2]\d|3[01])$/;
document.write("20091021", ": ", regyyyyMMdd.test("20091021"), "<br />");
document.write("20093121", ": ", regyyyyMMdd.test("20093121"), "<br />");
document.write("20091321", ": ", regyyyyMMdd.test("20091321"), "<br />");
document.write("20090331", ": ", regyyyyMMdd.test("20090331"), "<br />");
document.write("20090332", ": ", regyyyyMMdd.test("20090332"), "<br />");
#5
有日历控件,但是也可以入力的。谢谢先。试下。。。。。。。
#6
麻烦再帮下忙呗。我只要yyyyMMdd格式的。谢谢啦
#7
这样的好像判断不出来闰月吧。。。
#8
<script type="text/javascript">
<!--
var reg=/^(?:(?:(?:(?:(?:1[6-9]|[2-9][0-9])?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))()(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9][0-9])?[0-9]{2})()(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[13-9]|1[0-2])\2(?:29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1[0-9]|2[0-8]))))$/;
alert(reg.test("20080203"))
alert(reg.test("2009/02/28")) // 28天为true
alert(reg.test("20090229")) // 29为false
//-->
</script>
#9
配合格式检查可以做到
L@_@K
function validateDateStr(yyyyMMdd)
{
// yyyy: 1000-2999
// MM: 01-12
// dd: 01-31
var reg = /^([12]\d{3})(0\d|1[0-2])([0-2]\d|3[01])$/;
if (reg.test(yyyyMMdd))
{
var arr = reg.exec(yyyyMMdd);
var d = new Date(parseInt(arr[1]), parseInt(arr[2])-1, parseInt(arr[3]));
return (d.getMonth()+1)==parseInt(arr[2]) && d.getDate()==parseInt(arr[3]);
}
else
return false;
}
document.write("20091021", ": ", validateDateStr("20091021"), "<br />");
document.write("20093121", ": ", validateDateStr("20093121"), "<br />");
document.write("20091321", ": ", validateDateStr("20091321"), "<br />");
document.write("20090331", ": ", validateDateStr("20090331"), "<br />");
document.write("20090332", ": ", validateDateStr("20090332"), "<br />");
document.write("20090229", ": ", validateDateStr("20090229"), "<br />");
document.write("20080229", ": ", validateDateStr("20080229"), "<br />");
document.write("20080230", ": ", validateDateStr("20080230"), "<br />");
#10
高手。结贴
#11
同样感谢。
#12
把闰月也考虑进去?
楼主太强了,正则表达式不具有任何的数学计算功能。
楼主太强了,正则表达式不具有任何的数学计算功能。
#13
2楼真强!!!佩服佩服!!!