導航:首頁 > 編程語言 > java正則表達式校驗

java正則表達式校驗

發布時間:2025-07-10 04:37:10

1. java正則表達式實用代碼-驗證身份證

本文以孫衛琴姐姐的系列Java經典書籍為參考,對Java正則表達式用於驗證身份證號碼的實用代碼進行介紹。

對於第一代身份證的15位驗證,正則表達式如下:

編碼規則從左到右依次為6位地區代碼,6位出生年份後兩位及日期,3位順序碼。

正則表達式為:[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3},其中前六位地區代碼非0開頭,後兩位是年份,接著是月份和日期,最後是順序碼。

對於第二代身份證的18位驗證,正則表達式如下:

編碼規則從左到右依次為6位地區代碼,8位年份及日期,3位順序碼,1位校驗碼(可為x)。

正則表達式為:[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx],其中前六位地區代碼非0開頭,年份和日期遵循特定格式,順序碼後接一位可為x的校驗碼。

以下為驗證身份證號碼有效性的示例代碼。

執行上述示例代碼,得到的列印結果如下。

2. java用正則表達式判斷一個18位身份證號是否有效

很顯然 是你得正則表達式不對啊,正確的18位身份證驗證正則為:

Stringregex="^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$";		

而且就算正則表達式正確了,你的邏輯判斷代碼也是有問題,

publicclassHomework{
publicstaticvoidmain(String[]args){
Stringregex="^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$";
System.out.println("請輸入18位的身份證號碼:");
Scannerscanner=newScanner(System.in);
Strings=scanner.nextLine();
if(s.matches(regex)){
inty1,y2;
Stringyear1=s.substring(6,8);
y1=Integer.parseInt(year1);
Stringyear2=s.substring(8,10);
y2=Integer.parseInt(year2);
if((y1==18&&y2>=87&&y2<=89)
||(y1==19&&y2>=0&&y2<=99)
||(y1==20&&y2<=17)){
intm,d;
Stringmonth=s.substring(10,12);
m=Integer.parseInt(month);
Stringday=s.substring(12,14);
d=Integer.parseInt(day);
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12)
&&(d==31))
System.out.println("有效");
elseif((m==4||m==6||m==9||m==11)&&(d==30))
System.out.println("有效");
elseif(m==2){
inty;
Stringyear=s.substring(6,10);
y=Integer.parseInt(year);
if(((y%4==0&&y%100!=0)||y%400==0)
&&(d==29))
System.out.println("有效");
elseif(((y%4!=0&&y%100==0)||y%400!=0)
&&(d==28))
System.out.println("有效");
else
System.out.println("無效");
return;
}else{
System.out.println("無效");
return;
}
intss;
Stringsex=s.substring(16,17);
ss=Integer.parseInt(sex);
if(ss%2==0)
System.out.println("女性");
else
System.out.println("男性");
}else
System.out.println("無效");
}else
System.out.println("無效");
}
}

3. java中如何用正則表達式判斷一個字元串中是否包含0-9的數字

// 判斷一個字元串是否都為數字
public boolean isDigit(String strNum) {
return strNum.matches("薯春[0-9]{1,}");
}

// 判數段耐斷一個字元串是否都為數字
public boolean isDigit(String strNum) {
Pattern pattern = Pattern.compile("[0-9]{1,}");
Matcher matcher = pattern.matcher((CharSequence) strNum);
return matcher.matches();
}

/燃胡/截取數字
public String getNumbers(String content) {
Pattern pattern = Pattern.compile("\\d+");
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
return matcher.group(0);
}
return "";
}

// 截取非數字
public String splitNotNumber(String content) {
Pattern pattern = Pattern.compile("\\D+");
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
return matcher.group(0);
}
return "";
}
// 判斷一個字元串是否含有數字
public boolean hasDigit(String content) {
boolean flag = false;
Pattern p = Pattern.compile(".*\\d+.*");
Matcher m = p.matcher(content);
if (m.matches())
flag = true;
return flag;
}

4. java密碼正則表達式(可以是純數字,也可以是純字母,也可以是數字+字母,6-16 位)

正則表達式是一種描述字元串集合的方法,它是以字元串集中各字元串的共有特徵為依據的。正則表達式可以用於探索、編輯或者操作文本和數據。它超出了Java程序設計語言的標准語法,因此有必要去學習特定的語法來構建正則表達式。正則表達式的變化是復雜的,一旦你理解了他們是如何被構造的話,你就能解析或者構建任意的正則表達式了。
密碼校驗規則如下:
1.必須包含數字、字母、特殊字元三種
2.長度至少8位
3.不能包含3位及以上相同字元的重復(hhh123@jixxx)
4.不能包含3位及以上字元組合的重復(123q123c123)
5.不能包含3位以上的正序及逆序連續字元(123#wete#321)
6.不能包含空格、製表符、換頁符等空白字元
7.支持特殊字元范圍:^$./,;:'!@#%&*|?+(){}[]

按照需求進行正則表達式拆解

規則1&&8:
str.matches("^.*[a-zA-Z]+.*$") && str.matches("^.*[0-9]+.*$")
&& str.matches("^.*[/^/$/.//,;:'!@#%&/*/|/?/+/(/)/[/]/{/}]+.*$")

規則2:
str.matches("^.{8,}$")

規則3:
!str.matches("^.*(.)\\1{2,}+.*$")

規則4:
!str.matches("^.*(.{3})(.*)\\1+.*$")

規則5&&7:
javaImpl:
first change str to char[]
then for Math.abs(cc[0] - cc[1]) == 1 && (cc[0] - cc[1]) == (cc[1] - cc[2])
如果想去掉特殊字元的連續:
first str.split("[^\\w]+") as str1[]
then for str1[]
then for str1[i] javaImpl:

規則6:
!str.matches("^.*[\\s]+.*$")

5. java涓媯鏌ュ撳悕鐨勬e垯琛ㄨ揪寮

浠ヤ笅鏄涓涓狫ava涓鐢ㄤ簬媯鏌ュ撳悕鐨勬e垯琛ㄨ揪寮忥紝瀹冭兘澶熷尮閰2鍒8涓奼夊瓧鎴栬2鍒16涓鑻辨枃瀛楁瘝銆

code
String regex = "^([\\u4E00-\\u9FA5]{2,8}|[a-zA-Z]{2,16})$";
鍏蜂綋瑙i噴濡備笅錛

^ 琛ㄧず鍖歸厤瀛楃︿覆鐨勫紑澶
() 琛ㄧず涓涓鎹曡幏緇勶紝鍏朵腑鍖呭惈浜嗕袱涓瀛愭ā寮
[\u4E00-\u9FA5] 琛ㄧず涓涓奼夊瓧瀛楃︼紝鑼冨洿涓篣nicode緙栫爜鐨勪腑鏂囪寖鍥
{2,8} 琛ㄧず璇ュ瓧絎﹀彲浠ュ嚭鐜2鍒8嬈
| 琛ㄧず閫昏緫鎴栵紝琛ㄧず涓や釜瀛愭ā寮忎腑鐨勪換鎰忎竴涓閮藉彲浠ュ尮閰嶆垚鍔
[a-zA-Z] 琛ㄧず涓涓鑻辨枃瀛楁瘝錛屼笉鍖哄垎澶у皬鍐
{2,16} 琛ㄧず璇ュ瓧絎﹀彲浠ュ嚭鐜2鍒16嬈
$ 琛ㄧず鍖歸厤瀛楃︿覆鐨勭粨灝
鍥犳わ紝涓婇潰鐨勬e垯琛ㄨ揪寮忓彲浠ュ尮閰嶉暱搴︿負2鍒8涓奼夊瓧鎴栭暱搴︿負2鍒16涓鑻辨枃瀛楁瘝鐨勫瓧絎︿覆錛屽彲浠ョ敤浜庢鏌ュ撳悕鏄鍚︾﹀悎瑕佹眰銆

6. 求java中正則表達式的例子

一、校驗數字的表達式
1 數字:^[0-9]*$
2 n位的數字:^\d{n}$
3 至少n位的數字:^\d{n,}$
4 m-n位的數字:^\d{m,n}$
5 零和非零開頭的數字:^(0|[1-9][0-9]*)$
6 非零開頭的最多帶兩位小數的數字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 帶1-2位小數的正數或負數:^(\-)?\d+(\.\d{1,2})?$
8 正數、負數、和小數:^(\-|\+)?\d+(\.\d+)?$
9 有兩位小數的正實數:^[0-9]+(.[0-9]{2})?$
10 有1~3位小數的正實數:^[0-9]+(.[0-9]{1,3})?$
11 非零的正整數:^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12 非零的負整數:^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13 非負整數:^\d+$ 或 ^[1-9]\d*|0$
14 非正整數:^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非負浮點數:^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16 非正浮點數:^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17 正浮點數:^[1-9]\d*\.\d*|0\.\d*[1-9]\d*$ 或 ^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$
18 負浮點數:^-([1-9]\d*\.\d*|0\.\d*[1-9]\d*)$ 或 ^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$
19 浮點數:^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$

二、校驗字元的表達式
1 漢字:^[\u4e00-\u9fa5]{0,}$
2 英文和數字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$
3 長度為3-20的所有字元:^.{3,20}$
4 由26個英文字母組成的字元串:^[A-Za-z]+$
5 由26個大寫英文字母組成的字元串:^[A-Z]+$
6 由26個小寫英文字母組成的字元串:^[a-z]+$
7 由數字和26個英文字母組成的字元串:^[A-Za-z0-9]+$
8 由數字、26個英文字母或者下劃線組成的字元串:^\w+$ 或 ^\w{3,20}$
9 中文、英文、數字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、數字但不包括下劃線等符號:^[\u4E00-\u9FA5A-Za-z0-9]+$ 或 ^[\u4E00-\u9FA5A-Za-z0-9]{2,20}$
11 可以輸入含有^%&',;=?$\"等字元:[^%&',;=?$\x22]+
12 禁止輸入含有~的字元:[^~\x22]+

三、特殊需求表達式
1 Email地址:^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?
3 InternetURL:[a-zA-z]+://[^\s]* 或 ^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$
4 手機號碼:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$
5 電話號碼("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$
6 國內電話號碼(0511-4405222、021-87888822):\d{3}-\d{8}|\d{4}-\d{7}
7 身份證號:
15或18位身份證:^\d{15}|\d{18}$
15位身份證:^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$
18位身份證:^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{4}$
8 短身份證號碼(數字、字母x結尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9 帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10 密碼(以字母開頭,長度在6~18之間,只能包含字母、數字和下劃線):^[a-zA-Z]\w{5,17}$
11 強密碼(必須包含大小寫字母和數字的組合,不能使用特殊字元,長度在8-10之間):^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$
12 日期格式:^\d{4}-\d{1,2}-\d{1,2}
13 一年的12個月(01~09和1~12):^(0?[1-9]|1[0-2])$
14 一個月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$
15 錢的輸入格式:
16 1.有四種錢的表示形式我們可以接受:"10000.00" 和 "10,000.00", 和沒有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$
17 2.這表示任意一個不以0開頭的數字,但是,這也意味著一個字元"0"不通過,所以我們採用下面的形式:^(0|[1-9][0-9]*)$
18 3.一個0或者一個不以0開頭的數字.我們還可以允許開頭有一個負號:^(0|-?[1-9][0-9]*)$
19 4.這表示一個0或者一個可能為負的開頭不為0的數字.讓用戶以0開頭好了.把負號的也去掉,因為錢總不能是負的吧.下面我們要加的是說明可能的小數部分:^[0-9]+(.[0-9]+)?$
20 5.必須說明的是,小數點後面至少應該有1位數,所以"10."是不通過的,但是 "10" 和 "10.2" 是通過的:^[0-9]+(.[0-9]{2})?$
21 6.這樣我們規定小數點後面必須有兩位,如果你認為太苛刻了,可以這樣:^[0-9]+(.[0-9]{1,2})?$
22 7.這樣就允許用戶只寫一位小數.下面我們該考慮數字中的逗號了,我們可以這樣:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
23 8.1到3個數字,後面跟著任意個 逗號+3個數字,逗號成為可選,而不是必須:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
24 備註:這就是最終結果了,別忘了"+"可以用"*"替代如果你覺得空字元串也可以接受的話(奇怪,為什麼?)最後,別忘了在用函數時去掉去掉那個反斜杠,一般的錯誤都在這里
25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
26 中文字元的正則表達式:[\u4e00-\u9fa5]
27 雙位元組字元:[^\x00-\xff] (包括漢字在內,可以用來計算字元串的長度(一個雙位元組字元長度計2,ASCII字元計1))
28 空白行的正則表達式:\n\s*\r (可以用來刪除空白行)
29 HTML標記的正則表達式:<(\S*?)[^>]*>.*?</\1>|<.*? /> (網上流傳的版本太糟糕,上面這個也僅僅能部分,對於復雜的嵌套標記依舊無能為力)
30 首尾空白字元的正則表達式:^\s*|\s*$或(^\s*)|(\s*$) (可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表達式)
31 騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)
32 中國郵政編碼:[1-9]\d{5}(?!\d) (中國郵政編碼為6位數字)
33 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址時有用)

7. 在java後台,用正則表達式驗證身份證

這個是正則表達式,給你段代碼,你自己琢磨吧!

//正則表達式 校驗是否存在非法字元
private String checkPattern(String str){
String len;
String regEx="[`~!@#$%^&*()+=|{}':;',\\[\\].<>/?~!@#¥%……&*()——+|{}【】『;:」「』。,、?]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
len=m.replaceAll("").trim();
return len;
}

閱讀全文

與java正則表達式校驗相關的資料

熱點內容
泰拉瑞亞13伺服器ip地址怎麼看 瀏覽:871
python數據擬合最小二乘法 瀏覽:412
手語編程基礎教學 瀏覽:248
安卓手機關注後還要下載什麼 瀏覽:9
ui和編程哪個更好 瀏覽:290
電氣自動化與程序員哪個好 瀏覽:454
bbc翻譯app哪個好 瀏覽:288
ios隱藏單個app怎麼回復 瀏覽:816
泉城辦app怎麼樣 瀏覽:152
如何用優盤安裝伺服器 瀏覽:121
第八彈解壓密碼 瀏覽:772
程序員離職後如何走出低谷 瀏覽:156
代駕司機app軟體怎麼下載 瀏覽:580
js源碼網站搭建 瀏覽:765
河源粵運app怎麼下載 瀏覽:684
微信訂單監控源碼 瀏覽:452
蘇州市免費簡單加密軟體 瀏覽:667
java正則表達式校驗 瀏覽:45
什麼叫伺服器掃爆 瀏覽:448
很粘人程序員男朋友 瀏覽:140