js中常用的正規表示式【Z】
匹配中文字元的正規表示式: [u4e00-u9fa5]
評註:匹配中文還真是個頭疼的事,有了這個表示式就好辦了
匹配雙位元組字元(包括漢字在內):[^x00-xff]
評註:可以用來計算字串的長度(一個雙位元組字元長度計2,ASCII字元計1)
匹配空白行的正規表示式:ns*r
評註:可以用來刪除空白行
匹配HTML標記的正規表示式:< (S*?)[^>]*>.*?|< .*? />
評註:網上流傳的版本太糟糕,上面這個也僅僅能匹配部分,對於複雜的巢狀標記依舊無能為力
匹配首尾空白字元的正規表示式:^s*|s*$
評註:可以用來刪除行首行尾的空白字元(包括空格、製表符、換頁符等等),非常有用的表示式
匹配Email地址的正規表示式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
評註:表單驗證時很實用
匹配網址URL的正規表示式:[a-zA-z]+://[^s]*
評註:網上流傳的版本功能很有限,上面這個基本可以滿足需求
匹配帳號是否合法(字母開頭,允許5-16位元組,允許字母數字下劃線):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
評註:表單驗證時很實用
匹配國內電話號碼:d{3}-d{8}|d{4}-d{7}
評註:匹配形式如 0511-4405222 或 021-87888822
匹配騰訊QQ號:[1-9][0-9]{4,}
評註:騰訊QQ號從10000開始
匹配中國郵政編碼:[1-9]d{5}(?!d)
評註:中國郵政編碼為6位數字
匹配身份證:d{15}|d{18}
評註:中國的身份證為15位或18位
匹配ip地址:d+.d+.d+.d+
評註:提取ip地址時有用
匹配特定數字:
^[1-9]d*$ //匹配正整數
^-[1-9]d*$ //匹配負整數
^-?[1-9]d*$ //匹配整數
^[1-9]d*|0$ //匹配非負整數(正整數 + 0)
^-[1-9]d*|0$ //匹配非正整數(負整數 + 0)
^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮點數
^-([1-9]d*.d*|0.d*[1-9]d*)$ //匹配負浮點數
^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$ //匹配浮點數
^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$ //匹配非負浮點數(正浮點數 + 0)
^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$ //匹配非正浮點數(負浮點數 + 0)
評註:處理大量資料時有用,具體應用時注意修正
匹配特定字串:
^[A-Za-z]+$ //匹配由26個英文字母組成的字串
^[A-Z]+$ //匹配由26個英文字母的大寫組成的字串
^[a-z]+$ //匹配由26個英文字母的小寫組成的字串
^[A-Za-z0-9]+$ //匹配由數字和26個英文字母組成的字串
^w+$ //匹配由數字、26個英文字母或者下劃線組成的字串
在使用RegularExpressionValidator驗證控制元件時的驗證功能及其驗證表示式介紹如下:
只能輸入數字:“^[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}$”
正確格式為:“XXXX-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”。
匹配中文字元的正規表示式: [u4e00-u9fa5]
匹配雙位元組字元(包括漢字在內):[^x00-xff]
匹配空行的正規表示式:n[s| ]*r
匹配HTML標記的正規表示式:/< (.*)>.*|< (.*) />/
匹配首尾空格的正規表示式:(^s*)|(s*$)
匹配Email地址的正規表示式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*
匹配網址URL的正規表示式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?
(1)應用:計算字串的長度(一個雙位元組字元長度計2,ASCII字元計1)
String.prototype.len=function(){return this.replace([^x00-xff]/g,”aa”).length;}
(2)應用:javascript中沒有像vbscript那樣的trim函式,我們就可以利用這個表示式來實現
String.prototype.trim = function()
{
return this.replace(/(^s*)|(s*$)/g, “”);
}
(3)應用:利用正規表示式分解和轉換IP地址
function IP2V(ip) //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!”)
}
}
(4)應用:從URL地址中提取檔名的javascript程式
s=”http://www.9499.net/page1.htm”;
s=s.replace(/(.*/){0,}([^.]+).*/ig,”$2″) ; //Page1.htm
(5)應用:利用正規表示式限制網頁表單裡的文字框輸入內容
用正規表示式限制只能輸入中文:onkeyup=”value=”/blog/value.replace(/["^u4E00-u9FA5]/g,”)
”
onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^u4E00-u9FA5]/g,”))”
用正規表示式限制只能輸入全形字元:
onkeyup=”value=”/blog/value.replace(/["^uFF00-uFFFF]/g,”) ”
onbeforepaste=”clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^uFF00-uFFFF]/g,”))”
用正規表示式限制只能輸入數字:onkeyup=”value=”/blog/value.replace(/["^d]/g,”)
“onbeforepaste=
“clipboardData.setData(’text’,clipboardData.getData(’text’).replace(/[^d]/g,”))”
用正規表示式限制只能輸入數字和英文:onkeyup=”value=”/blog/value.replace(/[W]/g,””) “onbeforepaste=”clipboardData.setData(’text’,clipboardData.getD
建立正規表示式物件語法
re = new RegExp
(/pattern/[flags])
flags 引數說明:
g
(全文查詢出現的所有 pattern
)
i
(忽略大小寫)
m
(多行查詢)
普通字元 | 描述 |
---|---|
\ | 將下一個字元標記為一個特殊字元、或一個原義字元、或一個 後向引用、或一個八進位制轉義符。例如,’n’ 匹配字元 “n”。’\n’ 匹配一個換行符。序列 ‘\\’ 匹配 “\” 而 “\(” 則匹配 “(”。 |
. | 匹配除 “\n” 之外的任何單個字元。要匹配包括 ‘\n’ 在內的任何字元,請使用象 ‘[.\n]‘ 的模式。 |
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’ 範圍內的任意字元。 |
\cx | 匹配由x 指明的控制字元。例如, \cM 匹配一個 Control-M 或回車符。 x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 ‘c’ 字元。 |
\d | 匹配一個數字字元。等價於 [0-9]。 |
\D | 匹配一個非數字字元。等價於 [^0-9]。 |
\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 之前至少有is preceded by at least 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 匹配版權符號 (?)。 |
特殊字元 | 說明 |
---|---|
$ | 匹配輸入字串的結尾位置。如果設定了 RegExp 物件的 Multiline 屬性,則 $ 也匹配 ‘\n’ 或 ‘\r’。要匹配 $ 字元本身,請使用 \$。 |
( ) | 標記一個子表示式的開始和結束位置。子表示式可以獲取供以後使用。要匹配這些字元,請使用 \( 和 \)。 |
* | 匹配前面的子表示式零次或多次。要匹配 * 字元,請使用 \*。 |
+ | 匹配前面的子表示式一次或多次。要匹配 + 字元,請使用 +。 |
. | 匹配除換行符 \n之外的任何單字元。要匹配 .,請使用 \。 |
[ | 標記一箇中括號表示式的開始。要匹配 [,請使用 \[。 |
? | 匹配前面的子表示式零次或一次,或指明一個非貪婪限定符。要匹配 ? 字元,請使用 \?。 |
\ | 將下一個字元標記為或特殊字元、或原義字元、或後向引用、或八進位制轉義符。例如, 'n' 匹配字元 'n'。'\n' 匹配換行符。序列 '\' 匹配 "\",而 '\(' 則匹配 "("。 |
^ | 匹配輸入字串的開始位置,除非在方括號表示式中使用,此時它表示不接受該字符集合。要匹配 ^ 字元本身,請使用\^。 |
{ | 標記限定符表示式的開始。要匹配 {,請使用 \{。 |
| | 指明兩項之間的一個選擇。要匹配 |,請使用 \|。 |
非列印字元 | 含義 |
---|---|
\cx | 匹配由x 指明的控制字元。例如, \cM 匹配一個 Control-M 或回車符。 x 的值必須為 A-Z 或 a-z 之一。否則,將 c 視為一個原義的 'c' 字元。 |
\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。 |
限定符 | 描述 |
---|---|
* | 匹配前面的子表示式零次或多次。例如,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?’。請注意在逗號和兩個數之間不能有空格。 |
定位符 | 描述 |
---|---|
^ | 匹配輸入字串的開始位置。如果設定了 RegExp 物件的 Multiline 屬性,^ 也匹配 ‘\n’ 或 ‘\r’ 之後的位置。 |
$ | 匹配輸入字串的結束位置。如果設定了RegExp 物件的 Multiline 屬性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置。 |
\b | 匹配一個單詞邊界,也就是指單詞和空格間的位置。 |
\B | 匹配非單詞邊界。 |
是否有匹配
regexpObject.test
(
string)
返回值為Boolean型
var re = new RegExp( /\bbe\b/g ) ; var str = "To be, or not to be:That is the question:" ; alert ( str.search ( re) ) ;
string.search
(
regexpObject)
返回匹配字元的位置,無匹配返回-1
var re = new RegExp( /\bbe\b/g ) ; var str = "To be, or not to be:That is the question:" ; alert ( re.test ( str) ) ;
取得正則匹配資訊
regexpObject.exec
(
string)
var re = new RegExp( /be/g ) ; var str = "To be, or not to be:That is the question:" ; var f; do { f = re.exec ( str) ; alert ( f + ":" + f.index ) ; } while ( f!= null ) ;
使用正規表示式進行字串替換
string.replace
(
re,
replaceString)
var re = new RegExp( /be/g ) ; var str = "To be, or not to be:That is the question:" ; alert ( str.replace ( re, "*" ) ) ;
相關文章
- 常用js正規表示式JS
- JS常用正規表示式及驗證時間的正規表示式JS
- JS中的正規表示式JS
- js中的正規表示式(1)JS
- UltraEdit (UE)中的常用正規表示式
- JS常用正規表示式備忘錄JS
- 淺談js中的正規表示式JS
- JS 的正規表示式JS
- js正規表示式常用函式詳解(續)JS函式
- JS常用的匹配正規表示式和例項JS
- 【正規表示式】常用的正規表示式(數字,漢字,字串,金額等的正規表示式)字串
- [js]正規表示式JS
- js正規表示式JS
- js 正規表示式JS
- 【譯】JS常用正規表示式備忘錄JS
- 常用正規表示式工具
- Java常用正規表示式Java
- [jQuery]常用正規表示式jQuery
- 常用有效的正規表示式【轉】
- js正規表示式速查JS
- 常用正規表示式總結
- java正規表示式大全(常用)Java
- C# 常用正規表示式C#
- 一些比較常用的 js 正規表示式 javaJSJava
- JS正規表示式的驗證JS
- 關於JS的正規表示式JS
- 正規表示式中常用的元字元字元
- [記錄]javascript常用的正規表示式JavaScript
- javascript常用的驗證正規表示式JavaScript
- iOS 常用的正規表示式判斷iOS
- java中的正規表示式Java
- iOS中的正規表示式iOS
- Oracle中的正規表示式Oracle
- 常用正規表示式匹配模式(java)模式Java
- ios使用常用正規表示式—NSPredicateiOS
- QT 正規表示式 通常用法QT
- JS正規表示式入門JS
- JS基礎:正規表示式JS