不是从web传入,所以不能用js的方法。谢谢各位
18 个解决方案
#1
用正则表达式看格式正确与否
然后用程序判断是不是合法
如果不是web的,简单点通过SimpleDateFormat来parse一下,报错就是不正确
直接用正则表达式很难实现
然后用程序判断是不是合法
如果不是web的,简单点通过SimpleDateFormat来parse一下,报错就是不正确
直接用正则表达式很难实现
#2
Title: Pattern Title [Details] [Test]
Expression: (((0[1-9]|[12][0-9]|3[01])([-./])(0[13578]|10|12)([-./])(\d{4}))|(([0][1-9]|[12][0-9]|30)([-./])(0[469]|11)([-./])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([-./])(02)([-./])(\d{4}))|((29)(\.|-|\/)(02)([-./])([02468][048]00))|((29)([-./])(02)([-./])([13579][26]00))|((29)([-./])(02)([-./])([0-9][0-9][0][48]))|((29)([-./])(02)([-./])([0-9][0-9][2468][048]))|((29)([-./])(02)([-./])([0-9][0-9][13579][26])))
Description: Jason West (jason.west@mail.state.ky.us) date validator with leap years using a strict dd/mm/yyyy (ITALIAN) format
Matches: 29/02/2000|||31/01/2000|||30-01-2000
Non-Matches: 29/02/2002|||32/01/2002|||10/2/2002
Expression: (((0[1-9]|[12][0-9]|3[01])([-./])(0[13578]|10|12)([-./])(\d{4}))|(([0][1-9]|[12][0-9]|30)([-./])(0[469]|11)([-./])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([-./])(02)([-./])(\d{4}))|((29)(\.|-|\/)(02)([-./])([02468][048]00))|((29)([-./])(02)([-./])([13579][26]00))|((29)([-./])(02)([-./])([0-9][0-9][0][48]))|((29)([-./])(02)([-./])([0-9][0-9][2468][048]))|((29)([-./])(02)([-./])([0-9][0-9][13579][26])))
Description: Jason West (jason.west@mail.state.ky.us) date validator with leap years using a strict dd/mm/yyyy (ITALIAN) format
Matches: 29/02/2000|||31/01/2000|||30-01-2000
Non-Matches: 29/02/2002|||32/01/2002|||10/2/2002
#3
hdhmail2000(禅剑飞雪) ( ) 信誉:100 Blog
这个东西哪里找过来的?
怎么这么精辟啊?
这个东西哪里找过来的?
怎么这么精辟啊?
#4
要不要考虑闰年和公元0年?
#5
hdhmail2000(禅剑飞雪)可以写的更具体一点吗?
DeRoshia(知秋一叶):这个就不用了,如果出现这种情况,也只能说用户不按规矩办事了。
DeRoshia(知秋一叶):这个就不用了,如果出现这种情况,也只能说用户不按规矩办事了。
#6
date validator with leap years
这不写了吗?考虑闰年的了
另外时间的间隔可以为-./
同时注意它的格式,他的西方式的,你可以改下,嫌麻烦你可以用这个办法来做,验证的时候把那个年、月、日按你的方式取出来(判断是"-"还是"."还是"/"就可以(indexof就可以),然后再用split就能得到),然后组合成 dd/mm/yyyy给这个正则表达式验证,应该不难了
这不写了吗?考虑闰年的了
另外时间的间隔可以为-./
同时注意它的格式,他的西方式的,你可以改下,嫌麻烦你可以用这个办法来做,验证的时候把那个年、月、日按你的方式取出来(判断是"-"还是"."还是"/"就可以(indexof就可以),然后再用split就能得到),然后组合成 dd/mm/yyyy给这个正则表达式验证,应该不难了
#7
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$
不考虑闰年和公元0年等的
没有hdhmail2000(禅剑飞雪)的考虑全面
但按你的要求估计够用了
不考虑闰年和公元0年等的
没有hdhmail2000(禅剑飞雪)的考虑全面
但按你的要求估计够用了
#8
try {
if (要验证的字符串.matches(正则表达式)) {
System.out.println("The regex matches your string");
}
else {
System.out.println("The regex does not match your string");
}
} catch (PatternSyntaxException ex) {
System.out.println("You have an error in your regular expression:\n" +
ex.getDescription());
}
//java怎么用正则表达式的
if (要验证的字符串.matches(正则表达式)) {
System.out.println("The regex matches your string");
}
else {
System.out.println("The regex does not match your string");
}
} catch (PatternSyntaxException ex) {
System.out.println("You have an error in your regular expression:\n" +
ex.getDescription());
}
//java怎么用正则表达式的
#9
这是一个从EXCEL表导入的校验,只允许日期符合’yyyy-mm-dd’、’yyyy-m-d’格式
小弟我对hdhmail2000(禅剑飞雪)给的这个表达式一点都看不懂,不知道如何去动手,又不能baidu,google,痛苦啊
另外DeRoshia(知秋一叶) 的表达式支持合’yyyy-mm-dd’,但是不支持’yyyy-m-d’格式
小弟我对hdhmail2000(禅剑飞雪)给的这个表达式一点都看不懂,不知道如何去动手,又不能baidu,google,痛苦啊
另外DeRoshia(知秋一叶) 的表达式支持合’yyyy-mm-dd’,但是不支持’yyyy-m-d’格式
#10
不能沉,救命啊
#11
不知如何下手?不是都写得很明白了吗? if (要验证的字符串.matches(正则表达式)) {
这里的正则表达式就是那一长串,带进去不就完了?
这里的正则表达式就是那一长串,带进去不就完了?
#12
我试过了,这样做是不对的,无论写什么样的日期,返回的都是false
#13
Title: y/m/d Date [Details] [Test]
Expression: ^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$
Description: This expression validates dates in the y/m/d format from 1600/1/1 - 9999/12/31. Follows the same validation rules for dates as my other date validator (m/d/y format) located in this library.
Matches: 04/2/29|||2002-4-30|||02.10.31
Non-Matches: 2003/2/29|||02.4.31|||00/00/00
这个更适合你一点
Expression: ^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$
Description: This expression validates dates in the y/m/d format from 1600/1/1 - 9999/12/31. Follows the same validation rules for dates as my other date validator (m/d/y format) located in this library.
Matches: 04/2/29|||2002-4-30|||02.10.31
Non-Matches: 2003/2/29|||02.4.31|||00/00/00
这个更适合你一点
#14
对了注意加上前面的^和后面的$
#15
String str = "2007-02-20";
String regx = "^(?:(?:(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\\/|-|\\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\\d)?\\d{2})(\\/|-|\\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\\d|2[0-8]))))$";
if (str.matches(regx))
{
System.out.println("true");
System.out.println("符合格式");
}
else
{
System.out.println("false");
System.out.println("不符合格式");
}
我写的有什么问题吗?
String regx = "^(?:(?:(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\\/|-|\\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\\d)?\\d{2})(\\/|-|\\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\\d|2[0-8]))))$";
if (str.matches(regx))
{
System.out.println("true");
System.out.println("符合格式");
}
else
{
System.out.println("false");
System.out.println("不符合格式");
}
我写的有什么问题吗?
#16
另外DeRoshia(知秋一叶) 的表达式支持合’yyyy-mm-dd’,但是不支持’yyyy-m-d’格式
---------------------------------------------------------------
^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|1[0-9]|2[0-9]|3[0-1])$
呵呵,这部就支持了吗
import java.util.regex.*;
// 表达式对象
Pattern p = Pattern.compile("^\\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|1[0-9]|2[0-9]|3[0-1])$");
// 创建 Matcher 对象
Matcher m = p.matcher("your string");
// 是否找到匹配
boolean found = m.find();
if( found )
{
String foundstring = m.group();
int beginPos = m.start();
int endPos = m.end();
}
---------------------------------------------------------------
^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|1[0-9]|2[0-9]|3[0-1])$
呵呵,这部就支持了吗
import java.util.regex.*;
// 表达式对象
Pattern p = Pattern.compile("^\\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|1[0-9]|2[0-9]|3[0-1])$");
// 创建 Matcher 对象
Matcher m = p.matcher("your string");
// 是否找到匹配
boolean found = m.find();
if( found )
{
String foundstring = m.group();
int beginPos = m.start();
int endPos = m.end();
}
#17
如果是写一个类似boolean isDate(String)的方法,还是用SimpleDateFormat,通过setLenient,来check,正则太困难了。比如“历史上丢失的10天”什么的,而且楼上那么长的一个正则,直接用String.matches而不是保留一个编译好的Pattern,效率堪忧
#18
我试了试,mm/dd/yyyy的都不好用
#1
用正则表达式看格式正确与否
然后用程序判断是不是合法
如果不是web的,简单点通过SimpleDateFormat来parse一下,报错就是不正确
直接用正则表达式很难实现
然后用程序判断是不是合法
如果不是web的,简单点通过SimpleDateFormat来parse一下,报错就是不正确
直接用正则表达式很难实现
#2
Title: Pattern Title [Details] [Test]
Expression: (((0[1-9]|[12][0-9]|3[01])([-./])(0[13578]|10|12)([-./])(\d{4}))|(([0][1-9]|[12][0-9]|30)([-./])(0[469]|11)([-./])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([-./])(02)([-./])(\d{4}))|((29)(\.|-|\/)(02)([-./])([02468][048]00))|((29)([-./])(02)([-./])([13579][26]00))|((29)([-./])(02)([-./])([0-9][0-9][0][48]))|((29)([-./])(02)([-./])([0-9][0-9][2468][048]))|((29)([-./])(02)([-./])([0-9][0-9][13579][26])))
Description: Jason West (jason.west@mail.state.ky.us) date validator with leap years using a strict dd/mm/yyyy (ITALIAN) format
Matches: 29/02/2000|||31/01/2000|||30-01-2000
Non-Matches: 29/02/2002|||32/01/2002|||10/2/2002
Expression: (((0[1-9]|[12][0-9]|3[01])([-./])(0[13578]|10|12)([-./])(\d{4}))|(([0][1-9]|[12][0-9]|30)([-./])(0[469]|11)([-./])(\d{4}))|((0[1-9]|1[0-9]|2[0-8])([-./])(02)([-./])(\d{4}))|((29)(\.|-|\/)(02)([-./])([02468][048]00))|((29)([-./])(02)([-./])([13579][26]00))|((29)([-./])(02)([-./])([0-9][0-9][0][48]))|((29)([-./])(02)([-./])([0-9][0-9][2468][048]))|((29)([-./])(02)([-./])([0-9][0-9][13579][26])))
Description: Jason West (jason.west@mail.state.ky.us) date validator with leap years using a strict dd/mm/yyyy (ITALIAN) format
Matches: 29/02/2000|||31/01/2000|||30-01-2000
Non-Matches: 29/02/2002|||32/01/2002|||10/2/2002
#3
hdhmail2000(禅剑飞雪) ( ) 信誉:100 Blog
这个东西哪里找过来的?
怎么这么精辟啊?
这个东西哪里找过来的?
怎么这么精辟啊?
#4
要不要考虑闰年和公元0年?
#5
hdhmail2000(禅剑飞雪)可以写的更具体一点吗?
DeRoshia(知秋一叶):这个就不用了,如果出现这种情况,也只能说用户不按规矩办事了。
DeRoshia(知秋一叶):这个就不用了,如果出现这种情况,也只能说用户不按规矩办事了。
#6
date validator with leap years
这不写了吗?考虑闰年的了
另外时间的间隔可以为-./
同时注意它的格式,他的西方式的,你可以改下,嫌麻烦你可以用这个办法来做,验证的时候把那个年、月、日按你的方式取出来(判断是"-"还是"."还是"/"就可以(indexof就可以),然后再用split就能得到),然后组合成 dd/mm/yyyy给这个正则表达式验证,应该不难了
这不写了吗?考虑闰年的了
另外时间的间隔可以为-./
同时注意它的格式,他的西方式的,你可以改下,嫌麻烦你可以用这个办法来做,验证的时候把那个年、月、日按你的方式取出来(判断是"-"还是"."还是"/"就可以(indexof就可以),然后再用split就能得到),然后组合成 dd/mm/yyyy给这个正则表达式验证,应该不难了
#7
^\d{4}-(0[1-9]|1[0-2])-(0[1-9]|1[0-9]|2[0-9]|3[0-1])$
不考虑闰年和公元0年等的
没有hdhmail2000(禅剑飞雪)的考虑全面
但按你的要求估计够用了
不考虑闰年和公元0年等的
没有hdhmail2000(禅剑飞雪)的考虑全面
但按你的要求估计够用了
#8
try {
if (要验证的字符串.matches(正则表达式)) {
System.out.println("The regex matches your string");
}
else {
System.out.println("The regex does not match your string");
}
} catch (PatternSyntaxException ex) {
System.out.println("You have an error in your regular expression:\n" +
ex.getDescription());
}
//java怎么用正则表达式的
if (要验证的字符串.matches(正则表达式)) {
System.out.println("The regex matches your string");
}
else {
System.out.println("The regex does not match your string");
}
} catch (PatternSyntaxException ex) {
System.out.println("You have an error in your regular expression:\n" +
ex.getDescription());
}
//java怎么用正则表达式的
#9
这是一个从EXCEL表导入的校验,只允许日期符合’yyyy-mm-dd’、’yyyy-m-d’格式
小弟我对hdhmail2000(禅剑飞雪)给的这个表达式一点都看不懂,不知道如何去动手,又不能baidu,google,痛苦啊
另外DeRoshia(知秋一叶) 的表达式支持合’yyyy-mm-dd’,但是不支持’yyyy-m-d’格式
小弟我对hdhmail2000(禅剑飞雪)给的这个表达式一点都看不懂,不知道如何去动手,又不能baidu,google,痛苦啊
另外DeRoshia(知秋一叶) 的表达式支持合’yyyy-mm-dd’,但是不支持’yyyy-m-d’格式
#10
不能沉,救命啊
#11
不知如何下手?不是都写得很明白了吗? if (要验证的字符串.matches(正则表达式)) {
这里的正则表达式就是那一长串,带进去不就完了?
这里的正则表达式就是那一长串,带进去不就完了?
#12
我试过了,这样做是不对的,无论写什么样的日期,返回的都是false
#13
Title: y/m/d Date [Details] [Test]
Expression: ^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$
Description: This expression validates dates in the y/m/d format from 1600/1/1 - 9999/12/31. Follows the same validation rules for dates as my other date validator (m/d/y format) located in this library.
Matches: 04/2/29|||2002-4-30|||02.10.31
Non-Matches: 2003/2/29|||02.4.31|||00/00/00
这个更适合你一点
Expression: ^(?:(?:(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\/|-|\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\d)?\d{2})(\/|-|\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\d|2[0-8]))))$
Description: This expression validates dates in the y/m/d format from 1600/1/1 - 9999/12/31. Follows the same validation rules for dates as my other date validator (m/d/y format) located in this library.
Matches: 04/2/29|||2002-4-30|||02.10.31
Non-Matches: 2003/2/29|||02.4.31|||00/00/00
这个更适合你一点
#14
对了注意加上前面的^和后面的$
#15
String str = "2007-02-20";
String regx = "^(?:(?:(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\\/|-|\\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\\d)?\\d{2})(\\/|-|\\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\\d|2[0-8]))))$";
if (str.matches(regx))
{
System.out.println("true");
System.out.println("符合格式");
}
else
{
System.out.println("false");
System.out.println("不符合格式");
}
我写的有什么问题吗?
String regx = "^(?:(?:(?:(?:(?:1[6-9]|[2-9]\\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(\\/|-|\\.)(?:0?2\1(?:29)))|(?:(?:(?:1[6-9]|[2-9]\\d)?\\d{2})(\\/|-|\\.)(?:(?:(?:0?[13578]|1[02])\2(?:31))|(?:(?:0?[1,3-9]|1[0-2])\2(29|30))|(?:(?:0?[1-9])|(?:1[0-2]))\2(?:0?[1-9]|1\\d|2[0-8]))))$";
if (str.matches(regx))
{
System.out.println("true");
System.out.println("符合格式");
}
else
{
System.out.println("false");
System.out.println("不符合格式");
}
我写的有什么问题吗?
#16
另外DeRoshia(知秋一叶) 的表达式支持合’yyyy-mm-dd’,但是不支持’yyyy-m-d’格式
---------------------------------------------------------------
^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|1[0-9]|2[0-9]|3[0-1])$
呵呵,这部就支持了吗
import java.util.regex.*;
// 表达式对象
Pattern p = Pattern.compile("^\\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|1[0-9]|2[0-9]|3[0-1])$");
// 创建 Matcher 对象
Matcher m = p.matcher("your string");
// 是否找到匹配
boolean found = m.find();
if( found )
{
String foundstring = m.group();
int beginPos = m.start();
int endPos = m.end();
}
---------------------------------------------------------------
^\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|1[0-9]|2[0-9]|3[0-1])$
呵呵,这部就支持了吗
import java.util.regex.*;
// 表达式对象
Pattern p = Pattern.compile("^\\d{4}-(0?[1-9]|1[0-2])-(0?[1-9]|1[0-9]|2[0-9]|3[0-1])$");
// 创建 Matcher 对象
Matcher m = p.matcher("your string");
// 是否找到匹配
boolean found = m.find();
if( found )
{
String foundstring = m.group();
int beginPos = m.start();
int endPos = m.end();
}
#17
如果是写一个类似boolean isDate(String)的方法,还是用SimpleDateFormat,通过setLenient,来check,正则太困难了。比如“历史上丢失的10天”什么的,而且楼上那么长的一个正则,直接用String.matches而不是保留一个编译好的Pattern,效率堪忧
#18
我试了试,mm/dd/yyyy的都不好用