java时间正则
1. java用正则表达式判断字符串是不是时间
具体代码如下:
1 public static boolean isValidDate(String str) {
2 boolean convertSuccess=true;
3 // 指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;
4 SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm");
5 try {
6 // 设置lenient为false. 否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
7 format.setLenient(false);
8 format.parse(str);
9 } catch (ParseException e) {
10 // e.printStackTrace();
11 // 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
12 convertSuccess=false;
13 }
14 return convertSuccess;
2. JAVA 正则表达式提取时间
提取以后还要处理一下
看一下下边的例子。结果
2012-2-14
2015-13-35 (这样非法的就需要你自己来处理了。)
--------------------------------------------------------------------------------
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Other {
public static void main(String[] args) {
String str = "本页面最后修订于2012年2月14日 (星期二) 2015-13/35日 11:29。2012-135/14<br /></li>";
Pattern p = Pattern
.compile("[0-9]{4}[年|\\-|/][0-9]{1,2}[月|\\-|/][0-9]{1,2}");
Matcher m = p.matcher(str);
while (m.find()) {
if (!"".equals(m.group())) {
String date = m.group();
date = date.replaceAll("年", "-");
date = date.replaceAll("月", "-");
date = date.replaceAll("/", "-");
System.out.println(date);
}
}
}
}
3. java中基础问题,正则表达式判断时间格式:yyyy-M-d String regex="\\d{
[]内是unicode或ascii码之类的值的范围,不能简单的用这种方式。
应该是\\d{4}-([1-9]|1[0-2])-([1-9]|[1-2][0-9]|3[0-1])
4. 用JAVA正则表达式怎么匹配年月日(比如要求输入为出生日期)
建议使用 ^(\d{2}|\d{4})[-/](0?[1-9]|1[12])[-/](0?[1-9]|[12]\d|3[01])$ 来匹配(日期不一定有效),然后尝试转换成日期.如果要严谨点可以用^(\d{2}|\d{4})[-/](((0?[13578]|10|12)[-/](0?[1-9]|[12]\d|3[01]))|((0?[469]|11)[-/](0?[1-9]|[12]\d|30))|(0?2[-/](0?[1-9]|[12]\d)))$但是这里还是有个问题:将所有年份的2月29日都当作有效日期
5. java中日期的正则表达式
\d{4}-\d{2}-d{2}
不知道你这是什么语言写的啊,我提供这个正则表达式是没有问题的。
6. java中Js验证日期的正则表达式格式为:yyyy/MM/dd
var result=data.match(/((^((1[8-9]\d{2})|([2-9]\d{3}))(\/)(10|12|0?[13578])(\/)(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(\/)(11|0?[469])(\/)(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\d{2})|([2-9]\d{3}))(\/)(0?2)(\/)(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)(\/)(0?2)(\/)(29)$)|(^([3579][26]00)(\/)(0?2)(\/)(29)$)|(^([1][89][0][48])(\/)(0?2)(\/)(29)$)|(^([2-9][0-9][0][48])(\/)(0?2)(\/)(29)$)|(^([1][89][2468][048])(\/)(0?2)(\/)(29)$)|(^([2-9][0-9][2468][048])(\/)(0?2)(\/)(29)$)|(^([1][89][13579][26])(\/)(0?2)(\/)(29)$)|(^([2-9][0-9][13579][26])(\/)(0?2)(\/)(29)$))/);
将所有的(-)改成(\/)不就得了
我很久以前好像写过一个和这差不多的正则
7. java 正则表达式 匹配[00:00.00]或者[00:00]这两种歌词时间格式的正则表达式
下面的代码就是你想要的:
public static void main(String[] args) {
String regx1="\\[\\d{2}:\\d{2}.\\d{2}\\]";
String regx2="\\[\\d{2}:\\d{2}\\]";
Pattern p = Pattern.compile(regx1);
String str = "[124:00.00]";
Matcher m = p.matcher(str);
if(!m.matches()){
p = Pattern.compile(regx2);
m = p.matcher(str);
if(!m.matches()){
System.out.println("输入格式不符合要求!");
}else{
System.out.println("输入格式正确!匹配格式为:"+"[00:00]");
}
}else{
System.out.println("输入格式正确!匹配格式为:"+"[00:00.00]");
}
}
8. java 匹配时间的正则怎样写
4位时间如 00:00
([0-1]\d|2[0-3]):[0-5]\d
单一字符串 加^和$
如果是这样的时间也匹配 0:30, 8:9用下面这个
\b([0-1]?\d|2[0-3]):([0-5]?\d)\b
单一字符串用这个
^([0-1]?\d|2[0-3]):([0-5]?\d)$
9. java正则表达式的问题,有一个时间字符串(yyyyMMdd),怎么判断他在一个时间区间类,时间区间随时变化。
你这个很简单,不需要转成long再比较,java.util.Date已经有after()、before()等方法来比较两个时间的先后顺序了。示例代码如下:
/**
*检测一个时间是否在一个时间区间之内
*@paramstart有效的开始时间
*@paramend有效的结束时间
*@paramcheck待检测时间
*@return
*/
publicbooleancheckValidDay(Datestart,Dateend,Datecheck){
if(check.after(start)&&check.before(end)){
returntrue;
}else{
returnfalse;
}
}
@Test
publicvoidtest()throwsParseException{
StringvalidStartDayStr="20170501";//有效的开始时间
StringvalidEndDayStr="20171231";//有效的结束时间
StringtestDay1Str="20160101";//测试时间1
StringtestDay2Str="20170720";//测试时间2
StringtestDay3Str="20181230";//测试时间3
DateFormatformat=newSimpleDateFormat("yyyyMMdd");
DatestartDay=format.parse(validStartDayStr);
DateendDay=format.parse(validEndDayStr);
DatetestDay1=format.parse(testDay1Str);
DatetestDay2=format.parse(testDay2Str);
DatetestDay3=format.parse(testDay3Str);
System.out.println(checkValidDay(startDay,endDay,testDay1));
System.out.println(checkValidDay(startDay,endDay,testDay2));
System.out.println(checkValidDay(startDay,endDay,testDay3));
}
测试代码输出如下:
false
true
false
10. Java里面效验日期的正则表达式
publicstaticvoidmain(String[]args)
{
StringcheckValue="20000431112230";
Stringyear=checkValue.substring(0,4);//获取年份
Stringmonth=checkValue.substring(4,6);//获取月份
BooleanisLeap=leapYear(Integer.parseInt(year));//判断闰年
System.out.println(isLeap);
StringBuffereL=newStringBuffer();
StringlongMonth="01030507081012";//31天的月份
Stringfix="([2][0-3]|[0-1][0-9]|[1-9])[0-5][0-9]([0-5][0-9]|[6][0])";
if(isLeap&&month.equals("02")){//针对2月份的情况【闰年】
eL.append("\d{4}([1][0-2]|[0][0-9])([2][0-1]|[1-2][0-9]|[0][1-9]|[1-9])"+fix);
}elseif(!isLeap&&month.equals("02")){//针对2月份的情况【非闰年】
eL.append("\d{4}([1][0-2]|[0][0-9])([2][0-1]|[1-2][0-8]|[0][1-9]|[1-9])"+fix);
}elseif(longMonth.contains(month)){//31天月份
eL.append("\d{4}([1][0-2]|[0][0-9])([3][0-1]|[1-2][0-9]|[0][1-9]|[1-9])"+fix);
}else{//30天月份
eL.append("\d{4}([1][0-2]|[0][0-9])([3][0]|[1-2][0-9]|[0][1-9]|[1-9])"+fix);
}
Patternp=Pattern.compile(eL.toString());
Matcherm=p.matcher(checkValue);
booleanflag=m.matches();
if(flag)
{
System.out.println("格式正确");
}
else
{
System.out.println("格式错误");
}
}
publicstaticbooleanleapYear(intyear){
BooleanisLeap=false;
if(((year%100==0)&&(year%400==0))
||((year%100!=0)&&(year%4==0)))
isLeap=true;
returnisLeap;
}