Ⅰ java 正則表達式 字元串中提取日期 例如:某一節目第20140502期
packagep1;
importjava.util.regex.Matcher;
importjava.util.regex.Pattern;
public叢汪classRunnableTicket
{
publicstaticvoid纖慶main(String[]args)
{
Stringreg毀鄭握="[1-9]\d{3}(((0[13578]|1[02])([0-2]\d|3[01]))|((0[469]|11)([0-2]\d|30))|(02([01]\d|2[0-8])))";
Stringstr="某一節目第20140502期";
Patternpattern=Pattern.compile(reg);
Matchermatcher=pattern.matcher(str);
while(matcher.find())
{
System.out.println(matcher.group());
}
}
}
Ⅱ 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)$))/);
將所有的(-)改成(\/)不就得了
我很久以前好像寫過一個和這差不多的正則
Ⅲ 用java 語言,怎麼用正則匹配一段漢字的年月日!給個詳細的過程!
[0一二三四五六七八九十]+年[一二三四五六七八九十]+月[一二三四五六七八九十]+日
Ⅳ 用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日都當作有效日期
Ⅳ 表示年月的正則表達式
我們知道月份通常是兩個數字從01-12;所以月份可以採用|這個運算符來解決。當第一個數字式0的時候,第二個數字敏氏州就可以從1-9,當第一個數字式1的時候,第二個數字就只能從0-2。於是月份的正則表達式可以設計為:var
remonth=/0[1-9]|1[0-2]/;對於年份的正則表達式,我核悶們同樣也可以用|這個運算符來解決,考慮從1900-2099這個范圍的日期(當然你可以根據需要,任意設定,原理一樣),則可以設計年份橋蔽正則表達式如下:var
reyear=/19|20\d{2}/;於是年月正則表達式就可以設計如下:var
yearmonth=/(?:19|20\d{2})-(?:0[1-9]|1[0-2})/;(其中?:是一個非捕獲性標志)
Ⅵ 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;
}
Ⅶ Java中如何用正則表達式找出各種表達形式的日期
package tool;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringCruncher
{
public static void main ( String[] args )
{
String str = "注意我這里說2011-09-13的是找出,不是驗證什麼格式之類的。比如說str1=\"你好2014-09-13哈哈回\"這樣一個字答符串,裡面有日期,但是用str1.matches(regex)的話得出來的結果是錯的,請問該怎麼做?";
String reg ="\\d+\\-\\d+\\-\\d+";
Pattern pattern = Pattern.compile (reg);
Matcher matcher = pattern.matcher (str);
while (matcher.find ())
{
System.out.println (matcher.group ());
}
}
}
Ⅷ 用JAVA正則表達式怎麼匹配年月日
// /答源/2009-01-01 12:30:30 //年-月-日
String reg = "^\\d{4}-0[1-9]|1[1-2]-0[1-9]|[1-2]\\d|3[0-1] [0-2][0-4]:[0-6]\\d:[0-6]\\d$";
//01/01/2009 12:30:30 月/日/爛乎年
String reg2 = "^[0[1-9]|1[1-2]/0[1-9]|[1-2]\\d|3[0-1]/\\d{4} [0-2][0-4]:[0-6]\\d:[0-6]\清歷態\d$";
Ⅸ JAVA 正則法則如有驗證年份
目前仍沒有人解決1、3、5、7、8、10、12月是31天的大月問題呀
(我本是1樓)如果用正則去驗證「數值」此察,會很舍近求遠,不是正則的強項。需要寫很多的「向後斷言」。效率會一般甚至很低。(目前我看到的上下樓的都是有漏洞的,沒法檢驗閏月和大小月)
我所不取。
我一直用的這個:
static public boolean isValidDate(
int year, int mon, int day,
short year_min,short year_max,
StringBuffer msg)
{
if(year<year_min || year>year_max)
{
msg.append("年份必須在("+
year_min+"~"+year_max+
")之間,輸入值("+year+")無效\n");
return false;
}else{//
switch(mon){
case 1:case 3:case 5:case 7:case 8:case 10:case 12:{
if(day<1 || day>31){
msg.append("日號必須拿扒灶在(1~31)之間,輸入值("+day+")無效\n");
return false;
}
}break;
case 2:{
if(isLeapYear(year) && day>29){
msg.append("閏年的閏二月日號必須在(1~29)之間,"+year+"是閏年,輸入值("+day+")無效\n");
return false; }else if(day>28){
msg.append("非閏年的閏二月的日號必須在(1~28)之間,"+year+"不是閏年,輸入值("+day+")無效\n");
return false;
}
}break;
case 4:case 6:case 9:case 11:{
if(day<1 || day>30){
msg.append("日號必須在(1~30)之間,消扮輸入值("+day+")無效\n");
return false;
}
}break;
default:{
msg.append("月份必須在(1~12)之間,輸入值("+mon+")無效\n");
return false;
}
}
}
return true;
}
static public boolean isLeapYear(int year){
return (year%4==0 && year%100!=0)|| year%400==0;
}
包好。
Ⅹ java驗證日期"yyyyMMdd"正則表達式,
/^(\d{4})(0\d{1}|1[0-2])(0\d{1}|[12]\d{1}|3[01])$/;