c#正則表達式
阿新 • • 發佈:2017-06-11
長度 not 兩位小數 表達式 mat error 空白 空行 mail
c#正則表達式用法
只能輸入數字:
"^[0-9]*$"
。
只能輸入n位的數字:
"^\d{n}$"
。
只能輸入至少n位的數字:
"^\d{n,}$"
。
只能輸入m~n位的數字:。
"^\d{m,n}$"
只能輸入零和非零開頭的數字:
"^(0|[1-9][0-9]*)$"
。
只能輸入有兩位小數的正實數:
"^[0-9]+(.[0-9]{2})?$"
。
只能輸入有1~3位小數的正實數:
"^[0-9]+(.[0-9]{1,3})?$"
。
只能輸入非零的正整數:
"^\+?[1-9][0-9]*$"
。
只能輸入非零的負整數:
"^\-[1-9][]0-9"
*$。
只能輸入長度為3的字符:
"^.{3}$"
。
只能輸入由26個英文字母組成的字符串:
"^[A-Za-z]+$"
。
只能輸入由26個大寫英文字母組成的字符串:
"^[A-Z]+$"
。
只能輸入由26個小寫英文字母組成的字符串:
"^[a-z]+$"
。
只能輸入由數字和26個英文字母組成的字符串:
"^[A-Za-z0-9]+$"
。
只能輸入由數字、26個英文字母或者下劃線組成的字符串:
"^\w+$"
。
驗證用戶密碼:
"^[a-zA-Z]\w{5,17}$"
正確格式為:以字母開頭,長度在6~18之間,只能包含字符、數字和下劃線。
驗證是否含有^%&
‘,;=?$\"等字符:"[^%&‘
,;=?$\x22]+"。
只能輸入漢字:
"^[\u4e00-\u9fa5]{0,}$"
驗證Email地址:
"^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$"
。
驗證InternetURL:
"^http://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$"
。
驗證電話號碼:
"^(\(\d{3,4}-)|\d{3.4}-)?\d{7,8}$"
正確格式為:
"XXX-XXXXXXX"
、
"XXXX-XXXXXXXX"
、
"XXX-XXXXXXX"
、
"XXX-XXXXXXXX"
、
"XXXXXXX"
和
"XXXXXXXX"
。
驗證身份證號(15位或18位數字):
"^\d{15}|\d{18}$"
。
驗證一年的12個月:
"^(0?[1-9]|1[0-2])$"
正確格式為:
"01"
~
"09"
和
"1"
~
"12"
。
驗證一個月的31天:
"^((0?[1-9])|((1|2)[0-9])|30|31)$"
正確格式為;
"01"
~
"09"
和
"1"
~
"31"
。
利用正則表達式限制網頁表單裏的文本框輸入內容:
用正則表達式限制只能輸入中文:
用正則表達式限制只能輸入全角字符:
用正則表達式限制只能輸入數字:
用正則表達式限制只能輸入數字和英文:
得用正則表達式從URL地址中提取文件名的javascript程序,如下結果為page1
s=
"http://hi.baidu.com/accpandsvse"
s=s.replace(/(.*\/){0,}([^\.]+).*/ig,
"$2"
)
alert(s)
匹配雙字節字符(包括漢字在內):[^\x00-\xff]
應用:計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)
String.prototype.len=function(){
return
this
.replace([^\x00-\xff]/g,
"aa"
).length;}
匹配空行的正則表達式:\n[\s| ]*\r
匹配HTML標記的正則表達式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正則表達式:(^\s*)|(\s*$)
String.prototype.trim = function()
{
return
this
.replace(/(^\s*)|(\s*$)/g,
""
);
}
利用正則表達式分解和轉換IP地址:
下面是利用正則表達式匹配IP地址,並將IP地址轉換成對應數值的Javascript程序:
function IP2V(ip)
{
re=/(\d+)\.(\d+)\.(\d+)\.(\d+)/g
//匹配IP地址的正則表達式
if
(re.test(ip))
{
return
RegExp.$1*Math.pow(255,3))+RegExp.$2*Math.pow(255,2))+RegExp.$3*255+RegExp.$4*1
}
else
{
throw
new
Error(
"Not a valid IP address!"
)
}
}
不過上面的程序如果不用正則表達式,而直接用split函數來分解可能更簡單,程序如下:
var ip=
"10.100.20.168"
ip=ip.split(
"."
)
alert(
"IP值是:"
+(ip[0]*255*255*255+ip[1]*255*255+ip[2]*255+ip[3]*1))
符號解釋:
字符 描述
\ 將下一個字符標記為一個特殊字符、或一個原義字符、或一個 向後引用、或一個八進制轉義符。例如,
‘n‘
匹配字符
"n"
。
‘\n‘
匹配一個換行符。序列
‘\\‘
匹配
"\" 而 "
\(
" 則匹配 "
("。
^ 匹配輸入字符串的開始位置。如果設置了 RegExp 對象的 Multiline 屬性,^ 也匹配
‘\n‘
或
‘\r‘
之後的位置。
$ 匹配輸入字符串的結束位置。如果設置了RegExp 對象的 Multiline 屬性,$ 也匹配
‘\n‘
或
‘\r‘
之前的位置。
* 匹配前面的子表達式零次或多次。例如,zo* 能匹配
"z"
以及
"zoo"
。* 等價於{0,}。
+ 匹配前面的子表達式一次或多次。例如,
‘zo+‘
能匹配
"zo"
以及
"zoo"
,但不能匹配
"z"
。+ 等價於 {1,}。
? 匹配前面的子表達式零次或一次。例如,
"do(es)?"
可以匹配
"do"
或
"does"
中的
"do"
。? 等價於 {0,1}。
{n} n 是一個非負整數。匹配確定的 n 次。例如,
‘o{2}‘
不能匹配
"Bob"
中的
‘o‘
,但是能匹配
"food"
中的兩個 o。
{n,} n 是一個非負整數。至少匹配n 次。例如,
‘o{2,}‘
不能匹配
"Bob"
中的
‘o‘
,但能匹配
"foooood"
中的所有 o。
‘o{1,}‘
等價於
‘o+‘
。
‘o{0,}‘
則等價於
‘o*‘
。
{n,m} m 和 n 均為非負整數,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,
"o{1,3}"
將匹配
"fooooood"
中的前三個 o。
‘o{0,1}‘
等價於
‘o?‘
。請註意在逗號和兩個數之間不能有空格。
? 當該字符緊跟在任何一個其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 後面時,匹配模式是非貪婪的。非貪婪模式盡可能少的匹配所搜索的字符串,而默認的貪婪模式則盡可能多的匹配所搜索的字符串。例如,對於字符串
"oooo"
,
‘o+?‘
將匹配單個
"o"
,而
‘o+‘
將匹配所有
‘o‘
。
. 匹配除
"\n"
之外的任何單個字符。要匹配包括
‘\n‘
在內的任何字符,請使用象
‘[.\n]‘
的模式。
(pattern) 匹配 pattern 並獲取這一匹配。所獲取的匹配可以從產生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中則使用 $0…$9 屬性。要匹配圓括號字符,請使用
‘\(‘
或
‘\)‘
。
(?:pattern) 匹配 pattern 但不獲取匹配結果,也就是說這是一個非獲取匹配,不進行存儲供以後使用。這在使用
"或"
字符 (|) 來組合一個模式的各個部分是很有用。例如,
‘industr(?:y|ies) 就是一個比 ‘
industry|industries‘ 更簡略的表達式。
(?=pattern) 正向預查,在任何匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如,
‘Windows (?=95|98|NT|2000)‘
能匹配
"Windows 2000"
中的
"Windows"
,但不能匹配
"Windows 3.1"
中的
"Windows"
。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始。
(?!pattern) 負向預查,在任何不匹配 pattern 的字符串開始處匹配查找字符串。這是一個非獲取匹配,也就是說,該匹配不需要獲取供以後使用。例如
‘Windows (?!95|98|NT|2000)‘
能匹配
"Windows 3.1"
中的
"Windows"
,但不能匹配
"Windows 2000"
中的
"Windows"
。預查不消耗字符,也就是說,在一個匹配發生後,在最後一次匹配之後立即開始下一次匹配的搜索,而不是從包含預查的字符之後開始
x|y 匹配 x 或 y。例如,
‘z|food‘
能匹配
"z"
或
"food"
。
‘(z|f)ood‘
則匹配
"zood"
或
"food"
。
[xyz] 字符集合。匹配所包含的任意一個字符。例如,
‘[abc]‘
可以匹配
"plain"
中的
‘a‘
。
[^xyz] 負值字符集合。匹配未包含的任意字符。例如,
‘[^abc]‘
可以匹配
"plain"
中的
‘p‘
。
[a-z] 字符範圍。匹配指定範圍內的任意字符。例如,
‘[a-z]‘
可以匹配
‘a‘
到
‘z‘
範圍內的任意小寫字母字符。
[^a-z] 負值字符範圍。匹配任何不在指定範圍內的任意字符。例如,
‘[^a-z]‘
可以匹配任何不在
‘a‘
到
‘z‘
範圍內的任意字符。
\b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如,
‘er\b‘
可以匹配
"never"
中的
‘er‘
,但不能匹配
"verb"
中的
‘er‘
。
\B 匹配非單詞邊界。
‘er\B‘
能匹配
"verb"
中的
‘er‘
,但不能匹配
"never"
中的
‘er‘
。
\cx 匹配由 x 指明的控制字符。例如, \cM 匹配一個 Control-M 或回車符。x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的
‘c‘
字符。
\d 匹配一個數字字符。等價於 [0-9]。
\D 匹配一個非數字字符。等價於 [^0-9]。
\f 匹配一個換頁符。等價於 \x0c 和 \cL。
\n 匹配一個換行符。等價於 \x0a 和 \cJ。
\r 匹配一個回車符。等價於 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、換頁符等等。等價於 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等價於 [^ \f\n\r\t\v]。
\t 匹配一個制表符。等價於 \x09 和 \cI。
\v 匹配一個垂直制表符。等價於 \x0b 和 \cK。
\w 匹配包括下劃線的任何單詞字符。等價於
‘[A-Za-z0-9_]‘
。
\W 匹配任何非單詞字符。等價於
‘[^A-Za-z0-9_]‘
。
\xn 匹配 n,其中 n 為十六進制轉義值。十六進制轉義值必須為確定的兩個數字長。例如,
‘\x41‘
匹配
"A"
。
‘\x041‘
則等價於
‘\x04‘
&
"1"
。正則表達式中可以使用 ASCII 編碼。.
\num 匹配 num,其中 num 是一個正整數。對所獲取的匹配的引用。例如,
‘(.)\1‘
匹配兩個連續的相同字符。
\n 標識一個八進制轉義值或一個向後引用。如果 \n 之前至少 n 個獲取的子表達式,則 n 為向後引用。否則,如果 n 為八進制數字 (0-7),則 n 為一個八進制轉義值。
\nm 標識一個八進制轉義值或一個向後引用。如果 \nm 之前至少有 nm 個獲得子表達式,則 nm 為向後引用。如果 \nm 之前至少有 n 個獲取,則 n 為一個後跟文字 m 的向後引用。如果前面的條件都不滿足,若 n 和 m 均為八進制數字 (0-7),則 \nm 將匹配八進制轉義值 nm。
\nml 如果 n 為八進制數字 (0-3),且 m 和 l 均為八進制數字 (0-7),則匹配八進制轉義值 nml。
\un 匹配 n,其中 n 是一個用四個十六進制數字表示的 Unicode 字符。例如, \u00A9 匹配版權符號 (?)。
c#正則表達式