一、校驗數(shù)字的表達式
創(chuàng)新互聯(lián)建站主要從事網(wǎng)站制作、成都做網(wǎng)站、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務朔城,10年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:13518219792
1 數(shù)字:^[0-9]*$
2 n位的數(shù)字:^\d{n}$
3 至少n位的數(shù)字:^\d{n,}$
4 m-n位的數(shù)字:^\d{m,n}$
5 零和非零開頭的數(shù)字:^(0|[1-9][0-9]*)$
6 非零開頭的最多帶兩位小數(shù)的數(shù)字:^([1-9][0-9]*)+(.[0-9]{1,2})?$
7 帶1-2位小數(shù)的正數(shù)或負數(shù):^(\-)?\d+(\.\d{1,2})?$
8 正數(shù)、負數(shù)、和小數(shù):^(\-|\+)?\d+(\.\d+)?$
9 有兩位小數(shù)的正實數(shù):^[0-9]+(.[0-9]{2})?$
10 有1~3位小數(shù)的正實數(shù):^[0-9]+(.[0-9]{1,3})?$
11 非零的正整數(shù):^[1-9]\d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^\+?[1-9][0-9]*$
12 非零的負整數(shù):^\-[1-9][]0-9"*$ 或 ^-[1-9]\d*$
13 非負整數(shù):^\d+$ 或 ^[1-9]\d*|0$
14 非正整數(shù):^-[1-9]\d*|0$ 或 ^((-\d+)|(0+))$
15 非負浮點數(shù):^\d+(\.\d+)?$ 或 ^[1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0$
16 非正浮點數(shù):^((-\d+(\.\d+)?)|(0+(\.0+)?))$ 或 ^(-([1-9]\d*\.\d*|0\.\d*[1-9]\d*))|0?\.0+|0$
17 正浮點數(shù):^[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 負浮點數(shù):^-([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 浮點數(shù):^(-?\d+)(\.\d+)?$ 或 ^-?([1-9]\d*\.\d*|0\.\d*[1-9]\d*|0?\.0+|0)$
二、校驗字符的表達式
1 漢字:^[\u4e00-\u9fa5]{0,}$
2 英文和數(shù)字:^[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 由數(shù)字和26個英文字母組成的字符串:^[A-Za-z0-9]+$
8 由數(shù)字、26個英文字母或者下劃線組成的字符串:^\w+$ 或 ^\w{3,20}$
9 中文、英文、數(shù)字包括下劃線:^[\u4E00-\u9FA5A-Za-z0-9_]+$
10 中文、英文、數(shù)字但不包括下劃線等符號:^[\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 國內(nèi)電話號碼(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 短身份證號碼(數(shù)字、字母x結尾):^([0-9]){7,18}(x|X)?$ 或 ^\d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$
9 帳號是否合法(字母開頭,允許5-16字節(jié),允許字母數(shù)字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
10 密碼(以字母開頭,長度在6~18之間,只能包含字母、數(shù)字和下劃線):^[a-zA-Z]\w{5,17}$
11 強密碼(必須包含大小寫字母和數(shù)字的組合,不能使用特殊字符,長度在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開頭的數(shù)字,但是,這也意味著一個字符"0"不通過,所以我們采用下面的形式:^(0|[1-9][0-9]*)$
18 3.一個0或者一個不以0開頭的數(shù)字.我們還可以允許開頭有一個負號:^(0|-?[1-9][0-9]*)$
19 4.這表示一個0或者一個可能為負的開頭不為0的數(shù)字.讓用戶以0開頭好了.把負號的也去掉,因為錢總不能是負的吧.下面我們要加的是說明可能的小數(shù)部分:^[0-9]+(.[0-9]+)?$
20 5.必須說明的是,小數(shù)點后面至少應該有1位數(shù),所以"10."是不通過的,但是 "10" 和 "10.2" 是通過的:^[0-9]+(.[0-9]{2})?$
21 6.這樣我們規(guī)定小數(shù)點后面必須有兩位,如果你認為太苛刻了,可以這樣:^[0-9]+(.[0-9]{1,2})?$
22 7.這樣就允許用戶只寫一位小數(shù).下面我們該考慮數(shù)字中的逗號了,我們可以這樣:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$
23 8.1到3個數(shù)字,后面跟著任意個 逗號+3個數(shù)字,逗號成為可選,而不是必須:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$
24 備注:這就是最終結果了,別忘了"+"可以用"*"替代如果你覺得空字符串也可以接受的話(奇怪,為什么?)最后,別忘了在用函數(shù)時去掉去掉那個反斜杠,一般的錯誤都在這里
25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$
26 中文字符的正則表達式:[\u4e00-\u9fa5]
27 雙字節(jié)字符:[^\x00-\xff] (包括漢字在內(nèi),可以用來計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1))
28 空白行的正則表達式:\n\s*\r (可以用來刪除空白行)
29 HTML標記的正則表達式:(\S*?)[^]*.*?/\1|.*? / (網(wǎng)上流傳的版本太糟糕,上面這個也僅僅能部分,對于復雜的嵌套標記依舊無能為力)
30 首尾空白字符的正則表達式:^\s*|\s*$或(^\s*)|(\s*$) (可以用來刪除行首行尾的空白字符(包括空格、制表符、換頁符等等),非常有用的表達式)
31 騰訊QQ號:[1-9][0-9]{4,} (騰訊QQ號從10000開始)
32 中國郵政編碼:[1-9]\d{5}(?!\d) (中國郵政編碼為6位數(shù)字)
33 IP地址:\d+\.\d+\.\d+\.\d+ (提取IP地址時有用)
Java是面向表達式的語言,Java中一個簡單表達式可以是下面任意一種:● 常量:7、false?!?單引號括起來的字符字面常量:'A'、'3'?!?雙引號括起來的字符串字面常量:"foo"、"Java"?!?任何正確聲明的變量名:myString、x。● 任何用Java二元運算符(本章稍后將詳細討論)連接起來的兩個上述類型的表達式:x+2。● 任何用Java一元運算符(本章稍后將詳細討論)修飾的單個上述類型的表達式:i++。● 任何用小括號括起來的上述類型的表達式:(x+2)。以及另外一些與本書后面將要學到的對象有關的表達式類型。無論多么復雜的表達式都可以由不同類型的簡單表達式和括號嵌套組合而成,例如:((((4/x) + y) * 7) + z)。2.9.1 算術運算符 Java語言提供了許多基本的算術運算符,如表2-1所示。表2-1 Java算術運算符運算符描 述+加法-減法*乘法/除法%求余(%左邊的操作數(shù)除以右邊的
操作數(shù)所得到的余數(shù),例如10%3=1)+和-運算符也可作為一元運算符用于表示正負數(shù):-3.7、+42。除了簡單賦值運算符=,還有許多特定的復合賦值運算符,這些運算符將變量賦值和算術操作合并在一起,如表2-2所示。表2-2 Java復合賦值運算符運算符描 述+=a+=b等價于a=a+b-=a-=b等價于a=a-b*=a*=b等價于a=a*b/=a/=b等價于a=a/b%=a%=b等價于a=a%b最后要介紹的兩個算術運算符是一元遞增運算符(++)和一元遞減運算符(--),用于將整數(shù)變量的值加1或減1,或者將浮點數(shù)變量的值加1.0或減1.0。稱它們?yōu)橐辉\算符是因為它們用于單個變量,而前面討論的二元運算符則連接兩個表達式的值。一元遞增運算符和一元遞減運算符也可用于將字符變量在Unicode序列中向前或向后移動一個字符位置。例如,在下面的代碼片段中,字符變量c的值從'e'遞增為'f':遞增和遞減運算符可以以前綴或者后綴方式使用。如果運算符放在操作數(shù)之前(前綴模式),變量的遞增或遞減操作將在更新后的變量值被用于任何由它構成的賦值操作之前執(zhí)行。例如,考慮下面的使用前綴遞增運算符的代碼片段,假設a和b在程序前面已經(jīng)聲明為int變量:上述代碼執(zhí)行后,變量a的值是2,變量b的值也是2。這是因為在第二行中變量a的遞增(從1到2)發(fā)生在它的值賦給b之前。因此這行代碼在邏輯上等價于下面兩行代碼: 另一方面,如果運算符放在操作數(shù)之后(后綴模式),遞增或遞減操作發(fā)生在原來的變量值被用于任何由它構成的賦值操作之后??匆幌乱院缶Y方式使用遞增運算符的相同代碼片段:上述代碼執(zhí)行后,變量b的值是1,而變量a的值是2。這是因為在第二行中變量a的遞增(從1到2)發(fā)生在它的值賦給b之后。因此這行代碼在邏輯上等價于下面兩行代碼:下面是一個稍微復雜一點例子,請閱讀附加的注釋以確保你能夠明白x最終是如何被賦值為10的:稍后將會看到,遞增和遞減運算符通常和循環(huán)一起使用。2.9.2 關系和邏輯運算符邏輯表達式以指定的方式比較兩個(簡單或者復雜)表達式exp1和exp2,決議出一個boolean值true或者false。 Java提供了表2-3所示的關系運算符來創(chuàng)建邏輯表達式。表2-3 Java關系運算符運算符描 述exp1==exp2如果exp1等于exp2,值為true(注意使用雙等號測試相等性)exp1exp2如果exp1大于exp2,值為trueexp1=exp2如果exp1大于等于exp2,值為trueexp1exp2如果exp1小于exp2,值為trueexp1修飾邏輯表達式的邏輯運算符。表2-4列出了最常用的邏輯運算符。表2-4 Java邏輯運算符運算符描 述exp1exp2邏輯“與”,僅當exp1和exp2都為true時復合表達式值為trueexp1||exp2邏輯“或”,exp1或exp2值為true時復合表達式值為true!exp邏輯“非”,將邏輯表達式的值從true切換到false,反之亦然下面這個例子用邏輯“與”運算符來編程實現(xiàn)邏輯表達式“如果x大于2.0且y不等于4.0”:邏輯表達式常用于流程控制結構,本章稍后將進行討論。2.9.3 表達式求值和運算符優(yōu)先級如同本章前面提到的那樣,任何復雜的表達式都可以用分層嵌套的小括號構成,例如(((8 * (y + z)) + y) x)。編譯器通常按照從內(nèi)到外,從左到右的順序?qū)@樣的表達式求值。假設x、y、z按照下面的方式聲明并初始化:下面的賦值語句右邊的表達式:將像下面這樣逐步求值:沒有小括號時,根據(jù)運算符用于表達式求值的順序,某些運算符具有高于其他運算符的優(yōu)先級。例如,乘除法先于加減法執(zhí)行。通過使用小括號可以強制改變運算符的優(yōu)先級,括號內(nèi)的運算符比括號外的先執(zhí)行??紤]下面的代碼片段:代碼的第一行沒有使用括號,乘法操作比加法操作先執(zhí)行,因此整個表達式的值為2+12=14,就像我們將表達式明確地寫成2+(3*4)一樣,當然這樣做沒有必要。 在代碼的第二行,括號被明確地放在操作2+3兩邊,因此加法操作將首先執(zhí)行,然后求和結果乘以4作為整個表達式的值,即5*4=20?;氐角懊娴睦幼⒁獾胶?=運算符優(yōu)先級高于運算符,因此可以去掉嵌套的括號而變成下面這樣:然而,額外的括號并不會對代碼造成傷害,事實上它可以使表達式的目的更加清楚。2.9.4 表達式類型表達式類型是表達式最終求值結果的Java類型。例如給定下面的代碼片段:表達式(x 2.0) (y != 4.0)求值結果為true,因此表達式(x 2.0) (y != 4.0)稱為boolean型表達式。在下面的代碼片段中:表達式((8 * (y + z)) + y) * x求值結果為42,因此表達式((8 * (y + z)) + y) * x稱為整型表達式。
\S{6,18}
以下是常用的正則表達式希望能幫到你。
size=12px]1。^\d+$//匹配非負整數(shù)(正整數(shù) + 0)
2。^[0-9]*[1-9][0-9]*$//匹配正整數(shù)
3。^((-\d+)|(0+))$//匹配非正整數(shù)(負整數(shù) + 0)
4。^-[0-9]*[1-9][0-9]*$//匹配負整數(shù)
5。^-?\d+$//匹配整數(shù)
6。^\d+(\.\d+)?$//匹配非負浮點數(shù)(正浮點數(shù) + 0)
7。^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$//匹配正浮點數(shù)
8。^((-\d+(\.\d+)?)|(0+(\.0+)?))$//匹配非正浮點數(shù)(負浮點數(shù) + 0)
9。^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$//匹配負浮點數(shù)
10。^(-?\d+)(\.\d+)?$//匹配浮點數(shù)
11。^[A-Za-z]+$//匹配由26個英文字母組成的字符串
12。^[A-Z]+$//匹配由26個英文字母的大寫組成的字符串
13。^[a-z]+$//匹配由26個英文字母的小寫組成的字符串
14。^[A-Za-z0-9]+$//匹配由數(shù)字和26個英文字母組成的字符串
15。^\w+$//匹配由數(shù)字、26個英文字母或者下劃線組成的字符串
16。^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$//匹配email地址
17。^[a-zA-z]+://匹配(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$//匹配url
18。匹配中文字符的正則表達式: [\u4e00-\u9fa5]
19。匹配雙字節(jié)字符(包括漢字在內(nèi)):[^\x00-\xff]
20。應用:計算字符串的長度(一個雙字節(jié)字符長度計2,ASCII字符計1)
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}
21。匹配空行的正則表達式:\n[\s| ]*\r
22。匹配HTML標記的正則表達式:/(.*).*\/\1|(.*) \//
23。匹配首尾空格的正則表達式:(^\s*)|(\s*$)