日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

正则表达式摘录

發布時間:2023/12/2 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 正则表达式摘录 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

正則表達式到底是什么東西?
在編寫處理字符串的程序或網頁時,經常會有查找符合某些復雜規則的字符串的需要。正則表達式就是用于描述這些規則的工具。換句話說,正則表達式就是記錄文本規則的代碼。
常用元字符

代碼說明
.匹配除換行符以外的任意字符
\w匹配字母或數字或下劃線或漢字
\s匹配任意的空白符
\d匹配數字
\b匹配單詞的開始或結束
^匹配字符串的開始
$匹配字符串的結束


常用限定符

代碼/語法說明
*重復零次或更多次
+重復一次或更多次
?重復零次或一次
{n}重復n次
{n,}重復n次或更多次
{n,m}重復n到m次


常用反義詞

代碼/語法說明
\W匹配任意不是字母,數字,下劃線,漢字的字符
\S匹配任意不是空白符的字符
\D匹配任意非數字的字符
\B匹配不是單詞開頭或結束的位置
[^x]匹配除了x以外的任意字符
[^aeiou]匹配除了aeiou這幾個字母以外的任意字符

?

字符含意
\

做為轉意,即通常在"\"后面的字符不按原來意義解釋,如/b/匹配字符"b",當b前面加了反斜桿后/\b/,轉意為匹配一個單詞的邊界。? -或-? 對正則表達式功能字符的還原,如"*"匹配它前面元字符0次或多次,/a*/將匹配a,aa,aaa,加了"\"后,/a\*/將只匹配"a*"。

^匹配一個輸入或一行的開頭,/^a/匹配"an A",而不匹配"An a"
$匹配一個輸入或一行的結尾,/a$/匹配"An a",而不匹配"an A"
*匹配前面元字符0次或多次,/ba*/將匹配b,ba,baa,baaa
+匹配前面元字符1次或多次,/ba*/將匹配ba,baa,baaa
?匹配前面元字符0次或1次,/ba*/將匹配b,ba
(x)匹配x保存x在名為$1...$9的變量中
x|y匹配x或y
{n}精確匹配n次
{n,}匹配n次以上
{n,m}匹配n-m次
[xyz]字符集(character set),匹配這個集合中的任一一個字符(或元字符)
[^xyz]不匹配這個集合中的任何一個字符
[\b]匹配一個退格符
\b匹配一個單詞的邊界
\B匹配一個單詞的非邊界
\cX這兒,X是一個控制符,/\cM/匹配Ctrl-M
\d匹配一個字數字符,/\d/ = /[0-9]/
\D匹配一個非字數字符,/\D/ = /[^0-9]/
\n匹配一個換行符
\r匹配一個回車符
\s匹配一個空白字符,包括\n,\r,\f,\t,\v等
\S匹配一個非空白字符,等于/[^\n\f\r\t\v]/
\t匹配一個制表符
\v匹配一個重直制表符
\w匹配一個可以組成單詞的字符(alphanumeric,這是我的意譯,含數字),包括下劃線,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]
\W匹配一個不可以組成單詞的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。

用re = new RegExp("pattern",["flags"]) 的方式比較好? pattern : 正則表達式? flags: g (全文查找出現的所有 pattern)? i (忽略大小寫)? m (多行查找)

vaScript動態正則表達式問題

請問正則表達式可以動態生成嗎?? 例如JavaScript中:? var str = "strTemp";? 要生成:? var re = /strTemp/;? 如果是字符連接:? var re = "/" + str + "/"即可? 但是要生成表達式,可以實現嗎?怎樣實現?

?
???
???
[JAVA]?javascript 正則表達式? 秋雨葉 發表于 2004-12-9 14:54:13

正則表達式是一個描述字符模式的對象。? JavaScript的RegExp對象和String對象定義了使用正則表達式來執行強大的模式匹配和文本檢索與替換函數的方法.?
在JavaScript中,正則表達式是由一個RegExp對象表示的.當然,可以使用一個RegExp()構造函數來創建RegExp對象,? 也可以用JavaScript 1.2中的新添加的一個特殊語法來創建RegExp對象.就像字符串直接量被定義為包含在引號內的字符一樣,? 正則表達式直接量也被定義為包含在一對斜杠(/)之間的字符.所以,JavaScript可能會包含如下的代碼:?
var pattern = /s$/;?
這行代碼創建一個新的RegExp對象,并將它賦給變量parttern.這個特殊的RegExp對象和所有以字母"s"結尾的字符串都匹配.用RegExp()也可以定義? 一個等價的正則表達式,代碼如下:?
var pattern = new RegExp("s$");?
無論是用正則表達式直接量還是用構造函數RegExp(),創建一個RegExp對象都是比較容易的.較為困難的任務是用正則表達式語法來描述字符的模式.? JavaScript采用的是Perl語言正則表達式語法的一個相當完整的子集.?
正則表達式的模式規范是由一系列字符構成的.大多數字符(包括所有字母數字字符)描述的都是按照字面意思進行匹配的字符.這樣說來,正則表達式/java/就和? 所有包含子串 "java" 的字符串相匹配.雖然正則表達式中的其它字符不是按照字面意思進行匹配的,但它們都具有特殊的意義.正則表達式 /s$/ 包含兩個字符.? 第一個特殊字符 "s" 是按照字面意思與自身相匹配.第二個字符 "$" 是一個特殊字符,它所匹配的是字符串的結尾.所以正則表達式 /s$/ 匹配的就是以字母 "s" 結尾? 的字符串.?
1.直接量字符?
我們已經發現了,在正則表達式中所有的字母字符和數字都是按照字面意思與自身相匹配的.JavaScript的正則表達式還通過以反斜杠(\)開頭的轉義序列支持某些非?
字母字符.例如,序列 "\n" 在字符串中匹配的是一個直接量換行符.在正則表達式中,許多標點符號都有特殊的含義.下面是這些字符和它們的含義:?
正則表達式的直接量字符?
字符 匹配? ________________________________? 字母數字字符 自身? \ f 換頁符? \ n 換行符? \ r 回車? \ t 制表符? \ v 垂直制表符? \ / 一個 / 直接量? \ \ 一個 \ 直接量? \ . 一個 . 直接量? \ * 一個 * 直接量? \ + 一個 + 直接量? \ ? 一個 ? 直接量? \ | 一個 | 直接量? \ ( 一個 ( 直接量? \ ) 一個 ) 直接量? \ [ 一個 [ 直接量? \ ] 一個 ] 直接量? \ { 一個 { 直接量? \ } 一個 } 直接量? \ XXX 由十進制數 XXX 指 定的ASCII碼字符? \ Xnn 由十六進制數 nn 指定的ASCII碼字符? \ cX 控制字符^X. 例如, \cI等價于 \t, \cJ等價于 \n?
___________________________________________________?
如果想在正則表達式中使用特殊的標點符號,必須在它們之前加上一個 "\" .?
2.字符類?
將單獨的直接符放進中括號內就可以組合成字符類.一個字符類和它所包含的任何一個字符都匹配,所以正則表達式 / [abc] / 和字母 "a" , "b" , "c" 中的任何一個? 都匹配.另外還可以定義否定字符類,這些類匹配的是除那些包含在中括號之內的字符外的所有字符.定義否定字符尖時,要將一個 ^ 符號作為從左中括號算起的第? 一個字符.正則表達式的集合是 / [a-zA-z0-9] / .?
由于某些字符類非常常用,所以JavaScript的正則表達式語法包含一些特殊字符和轉義序列來表示這些常用的類.例如, \s 匹配的是空格符,制表符和其它空白符, \s? 匹配的則是空白符之外的任何字符.?
正則表灰式的字符類?
字符 匹配? ____________________________________________________? [...] 位于括號之內的任意字符? [^...] 不在括號之中的任意字符? . 除了換行符之外的任意字符,等價于[^\n]? \w 任何單字字符, 等價于[a-zA-Z0-9]? \W 任何非單字字符,等價于[^a-zA-Z0-9]? \s 任何空白符,等價于[\ t \ n \ r \ f \ v]? \S 任何非空白符,等價于[^\ t \ n \ r \ f \ v]? \d 任何數字,等價于[0-9]? \D 除了數字之外的任何字符,等價于[^0-9]? [\b] 一個退格直接量(特例)? ________________________________________________________________?
3.復制?
用以上的正則表式的語法,可以把兩位數描述成 / \ d \ d /,把四位數描述成 / \d \ d \ d \ d /.但我們還沒有一種方法可以用來描述具有任意多數位的數字或者是一個?
字符串.這個串由三個字符以及跟隨在字母之后的一位數字構成.這些復雜的模式使用的正則表達式語法指定了該表達式中每個元素要重復出現的次數.?
指定復制的字符總是出現在它們所作用的模式后面.由于某種復制類型相當常用.所以有一些特殊的字符專門用于表示它們.例如: +號匹配的就是復制前一模式一次?
或多次的模式.下面的表列出了復制語法.先看一個例子:?
/\d{2, 4}/ //匹配2到4間的數字.?
/\w{3} \d?/ //匹配三個單字字符和一個任意的數字.?
/\s+java\s+/ //匹配字符串"java" ,并且該串前后可以有一個或多個空格.?
/[^"] * / //匹配零個或多個非引號字符.?
正則表達式的復制字符?
字符 含義? __________________________________________________________________? {n, m} 匹配前一項至少n次,但是不能超過m次? {n, } 匹配前一項n次,或者多次? {n} 匹配前一項恰好n次? ? 匹配前一項0次或1次,也就是說前一項是可選的. 等價于 {0, 1}? + 匹配前一項1次或多次,等價于{1,}? * 匹配前一項0次或多次.等價于{0,}? ___________________________________________________________________?
4.選擇,分組和引用?
正則表達式的語法還包括指定選擇項,對子表達式分組和引用前一子表達式的特殊字符.字符| 用于分隔供選擇的字符.例如: /ab|cd|ef/ 匹配的是字符串 "ab",或者是?
字符串 "cd",又或者 "ef". /\d{3}|[a-z]{4}/ 匹配的是要么是一個三位數,要么是四個小寫字母.在正則表達式中括號具有幾種作用.它的主要作用是把單獨的項目分組?
成子表達式,以便可以像處理一個獨立的單元那種用 *、+或? 來處理那些項目.例如: /java(script) ?/ 匹配的是字符串 "java",其后既可以有 "script",也可以沒有. /?
(ab|cd) + |ef) / 匹配的既可以是字符串 "ef",也可以是字符串"ab" 或者 "cd" 的一次或多次重復.?
在正則表達式中,括號的第二個用途是在完整的模式中定義子模式。當一個正則表達式成功地和目標字符串相匹配時,可以從目標串中抽出和括號中的子模式相匹配?
的部分.例如,假定我們正在檢索的模式是一個或多個字母后面跟隨一位或多位數字,那么我們可以使用模式 / [a-z] + \ d+/.但是由于假定我們真正關心的是每個匹配?
尾部的數字,那么如果我們將模式的數字部分放在括號中 (/ [a-z] + (\d+)/) ,我們就可以從所檢索到的任何匹配中抽取數字了,之后我們會對此進行解析的.?
代括號的子表達式的另一個用途是,允許我們在同一正則表達式的后面引用前面的子表達式.這是通過在字符串 \ 后加一位或多位數字來實現的.數字指的是代括號的?
子表達式在正則表達式中的位置.例如: \1 引用的是第一個代括號的子表達式. \3 引用的是第三個代括號的子表達式.注意,由于子表達式可以嵌套在其它子表達式中,?
所以它的位置是被計數的左括號的位置.? 例如:在下面的正則表達式被指定為 \2:? /([Jj]ava([Ss]cript)) \sis \s (fun\w*) /?
對正則表達式中前一子表達式的引用所指定的并不是那個子表達式的模式,而是與那個模式相匹配的文本.這樣,引用就不只是幫助你輸入正則表達式的重復部分的快?
捷方式了,它還實施了一條規約,那就是一個字符串各個分離的部分包含的是完全相同的字符.例如:下面的正則表達式匹配的就是位于單引號或雙引號之內的所有字?
符.但是,它要求開始和結束的引號匹配(例如兩個都是雙引號或者都是單引號):? /[' "] [^ ' "]*[' "]/?
如果要求開始和結束的引號匹配,我們可以使用如下的引用:? /( [' "] ) [^ ' "] * \1/?
\1匹配的是第一個代括號的子表達式所匹配的模式.在這個例子中,它實施了一種規約,那就是開始的引號必須和結束的引號相匹配.注意,如果反斜杠后跟隨的數字比?
代括號的子表達式數多,那么它就會被解析為一個十進制的轉義序列,而不是一個引用.你可以堅持使用完整的三個字符來表示轉義序列,這們就可以避免混淆了.例如,?
使用 \044,而不是\44.下面是正則表達式的選擇、分組和引用字符:?
字符 含義? ____________________________________________________________________? | 選擇.匹配的要么是該符號左邊的子表達式,要么它右邊的子表達式? (...) 分組.將幾個項目分為一個單元.這個單元可由 *、+、?和|等符號使用,而且還可以記住和這個組匹配的字符以供此后引?
用使用? \n 和第n個分組所匹配的字符相匹配.分組是括號中的子表達式(可能是嵌套的).分組號是從左到右計數的左括號數? ____________________________________________________________________?

5.指定匹配的位置?
我們已經看到了,一個正則表達式中的許多元素才能夠匹配字符串的一個字符.例如: \s 匹配的只是一個空白符.還有一些正則表達式的元素匹配的是字符之間寬度為?
0的空間,而不是實際的字符例如: \b 匹配的是一個詞語的邊界,也就是處于一個/w字字符和一個\w非字字符之間的邊界.像\b 這樣的字符并不指定任何一個匹配了的?
字符串中的字符,它們指定的是匹配所發生的合法位置.有時我們稱這些元素為正則表達式的錨.因為它們將模式定位在檢索字符串中的一個特定位置.最常用的錨元?
素是 ^, 它使模式依賴于字符串的開頭,而錨元素$則使模式定位在字符串的末尾.?
例如:要匹配詞 "javascript" ,我們可以使用正則表達式 /^ javascript $/. 如果我們想檢索 "java" 這個詞自身 (不像在 "javascript" 中那樣作為前綴),那么我們可以使?
用模式 /\s java \s /, 它要求在詞語java之前和之后都有空格.但是這樣作有兩個問題.第一: 如果 "java" 出現在一個字符的開頭或者是結尾.該模式就不會與之匹配,除?
非在開頭和結尾處有一個空格. 第二: 當這個模式找到一個與之匹配的字符時,它返回的匹配的字符串前端和后端都有空格,這并不是我們想要的.因此,我們使用詞語?
的邊界 \b 來代替真正的空格符 \s 進行匹配. 結果表達式是 /\b java \b/.? 下面是正則表達式的錨字符:?
字符 含義? ____________________________________________________________________? ^ 匹配的是字符的開頭,在多行檢索中,匹配的是一行的開頭? $ 匹配的是字符的結尾,在多行檢索中,匹配的是一行的結尾? \b 匹配的是一個詞語的邊界.簡而言之就是位于字符\w 和 \w之間的位置(注意:[\b]匹配的是退格符)? \B 匹配的是非詞語的邊界的字符? _____________________________________________________________________

6.屬性?
有關正則表達式的語法還有最后一個元素,那就是正則表達式的屬性,它說明的是高級模式匹配的規則.和其它正則表達式語法不同,屬性是在 / 符號之外說明的.即它?
們不出現在兩個斜杠之間,而是位于第二個斜杠之后.javascript 1.2支持兩個屬性.屬性 i 說明模式匹配應該是大小寫不敏感的.屬性 g 說明模式匹配應該是全局的.也?
就是說,應該找出被檢索的字符串中所有的匹配.這兩種屬性聯合起來就可以執行一個全局的,大小寫不敏感的匹配.?
例如: 要執行一個大小不敏感的檢索以找到詞語 "java" (或者是 "java" 、"JAVA"等) 的第一個具體值,我們可以使用大小不敏感的正則表達式 /\b java\b/i .如果要在?
一個字符串中找到 "java" 所有的具體值,我們還可以添加屬性 g, 即 /\b java \b/gi .?
以下是正則表達式的屬性:?
字符 含義? _________________________________________? i 執行大小寫不敏感的匹配? g 執行一個全局的匹配,簡而言之,就是找到所有的匹配,而不是在找到第一個之后就停止了? _________________________________________?
除屬性 g 和 i 之外,正則表達式就沒有其它像屬性一樣的特性了.如果將構造函數 RegExp 的靜態屬性 multiline 設置為 true ,那么模式匹配將以多行的模式進行.在這?
種模式下,錨字符 ^ 和 $ 匹配的不只是檢索字符串的開頭和結尾,還匹配檢索字符串內部的一行的開頭和結尾.例如: 模式 /Java$/ 匹配的是 "Java",但是并不匹配?
"Java\nis fun" .如果我們設置了 multiline 屬性,那么后者也將被匹配:?
RegExp.multiline = true;

在JAVASCRIPT里面判斷一個字符串是否是電子郵件的格式:?

if(formname.email.value!=formname.email.value.match(/^\w +[@]\w +[.][\w.] +$/))? {? alert("您的電子郵件格式錯誤!");? formname.email.focus();? return false;? }
閱讀全文(42)?|?回復(0)?|?引用(0)?|?[用365key收藏此日志]?

[RED]function dateVerify(date){? var reg = /^(\d{4})(-)(\d{2})\2(\d{2})$/;? var r = date.match(reg);? if(r==null) return false;? var d= new Date(r[1], r[3]-1,r[4]);? var newStr=d.getFullYear()+r[2]+(d.getMonth()+1)+r[2]+d.getDate();? date=r[1]+r[2]+((r[3]-1)+1)+r[2]+((r[4]-1)+1);? return newStr==date;? }[/RED]?

?
javascript的17種正則表達式
作者:?不祥 ?時間:?2004-6-9
"^\\d+$"  //非負整數(正整數 + 0)? "^[0-9]*[1-9][0-9]*$"  //正整數? "^((-\\d+)|(0+))$"  //非正整數(負整數 + 0)? "^-[0-9]*[1-9][0-9]*$"  //負整數? "^-?\\d+$"    //整數? "^\\d+(\\.\\d+)?$"  //非負浮點數(正浮點數 + 0)? "^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮點數? "^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"  //非正浮點數(負浮點數 + 0)? "^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //負浮點數? "^(-?\\d+)(\\.\\d+)?$"  //浮點數? "^[A-Za-z]+$"  //由26個英文字母組成的字符串? "^[A-Z]+$"  //由26個英文字母的大寫組成的字符串? "^[a-z]+$"  //由26個英文字母的小寫組成的字符串? "^[A-Za-z0-9]+$"  //由數字和26個英文字母組成的字符串? "^\\w+$"  //由數字、26個英文字母或者下劃線組成的字符串? "^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"    //email地址? "^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"  //url?
JavaScript中的正則表達式(2)
?
?

作者?:中國論壇網收集?來源?:http://www.51one.net?加入時間?:2004-8-25  

正則表達式對象的屬性及方法?    預定義的正則表達式擁有有以下靜態屬性:input, multiline, lastMatch, lastParen, leftContext, rightContext和$1到$9。其中input和multiline可以預設置。其他屬性的值在執行過exec或test方法后被根據不同條件賦以不同的值。許多屬性同時擁有長和短(perl風格)的兩個名字,并且,這兩個名字指向同一個值。(JavaScript模擬perl的正則表達式)? 正則表達式對象的屬性

屬性含義
$1...$9如果它(們)存在,是匹配到的子串
$_參見input
$*參見multiline
$&參見lastMatch
$+參見lastParen
$`參見leftContext
$''         參見rightContext
constructor   創建一個對象的一個特殊的函數原型
global      是否在整個串中匹配(bool型)
ignoreCase    匹配時是否忽略大小寫(bool型)
input       被匹配的串
lastIndex    最后一次匹配的索引
lastParen    最后一個括號括起來的子串
leftContext   最近一次匹配以左的子串
multiline    是否進行多行匹配(bool型)
prototype    允許附加屬性給對象
rightContext   最近一次匹配以右的子串
source      正則表達式模式
lastIndex    最后一次匹配的索引
正則表達式對象的方法?
方法含義
compile     正則表達式比較
exec       執行查找
test       進行匹配
toSource     返回特定對象的定義(literal representing),其值可用來創建一個新的對象。重載Object.toSource方法得到的。
toString     返回特定對象的串。重載Object.toString方法得到的。
valueOf     返回特定對象的原始值。重載Object.valueOf方法得到
例子? <script language = "JavaScript">? var myReg = /(w+)s(w+)/;? var str = "John Smith";? var newstr = str.replace(myReg, "$2, $1");? document.write(newstr);? </script>? 將輸出"Smith, John"

?

?

?

javascript正則表達式檢驗

責任編輯:fuxing [?網人帝國?] 添加時間:2003-11-13 9:13:00 人氣:1169 【????

?

/*********************************************************************************? * EO_JSLib.js? * javascript正則表達式檢驗? **********************************************************************************/?
//校驗是否全由數字組成? function isDigit(s)? {? var patrn=/^[0-9]{1,20}$/;? if (!patrn.exec(s)) return false? return true? }?
//校驗登錄名:只能輸入5-20個以字母開頭、可帶數字、“_”、“.”的字串? function isRegisterUserName(s)? {? var patrn=/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/;? if (!patrn.exec(s)) return false? return true? }?
//校驗用戶姓名:只能輸入1-30個以字母開頭的字串? function isTrueName(s)? {? var patrn=/^[a-zA-Z]{1,30}$/;? if (!patrn.exec(s)) return false? return true? }?
//校驗密碼:只能輸入6-20個字母、數字、下劃線? function isPasswd(s)? {? var patrn=/^(\w){6,20}$/;? if (!patrn.exec(s)) return false? return true? }?
//校驗普通電話、傳真號碼:可以“+”開頭,除數字外,可含有“-”? function isTel(s)? {? //var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?(\d){1,12})+$/;? var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;? if (!patrn.exec(s)) return false? return true? }?
//校驗手機號碼:必須以數字開頭,除數字外,可含有“-”? function isMobil(s)? {? var patrn=/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/;? if (!patrn.exec(s)) return false? return true? }?
//校驗郵政編碼? function isPostalCode(s)? {? //var patrn=/^[a-zA-Z0-9]{3,12}$/;? var patrn=/^[a-zA-Z0-9 ]{3,12}$/;? if (!patrn.exec(s)) return false? return true? }?
//校驗搜索關鍵字? function isSearch(s)? {? var patrn=/^[^`~!@#$%^&*()+=|\\\][\]\{\}:;'\,.<>/?]{1}[^`~!@$%^&()+=|\\\][\]\{\}:;'\,.<>?]{0,19}$/;? if (!patrn.exec(s)) return false? return true? }?
function isIP(s) //by zergling? {? var patrn=/^[0-9.]{1,20}$/;? if (!patrn.exec(s)) return false? return true? }

?

?

正則表達式regular expression詳述(一)? http://www.kymita.com/888.asp 2002-12-15 藍箭工作室

正則表達式是regular expression,看來英文比中文要好理解多了,就是檢查表達式符? 不符合規定!!正則表達式有一個功能十分強大而又十分復雜的對象RegExp,在JavaScript1.2 版本以? 上提供。? 下面我們看看有關正則表達式的介紹:? 正則表達式對象用來規范一個規范的表達式(也就是表達式符不符合特定的要求,比如是不是Email? 地址格式等),它具有用來檢查給出的字符串是否符合規則的屬性和方法。? 除此之外,你用RegExp構造器建立的個別正則表達式對象的屬性,就已經預先定義好了正則表達式? 對象的靜態屬性,你可以隨時使用它們。? 核心對象:? 在JavaScript 1.2, NES 3.0以上版本提供。? 在JavaScript 1.3以后版本增加了toSource方法。? 建立方法:? 文字格式或RegExp構造器函數。? 文字建立格式使用以下格式:? /pattern/flags即/模式/標記

構造器函數方法使用方法如下:? new RegExp("pattern"[, "flags"])即new RegExp("模式"[,"標記"])

參數:? pattern(模式)? 表示正則表達式的文本

flags(標記)? 如果指定此項,flags可以是下面值之一:? g: global match(全定匹配)? i: ignore case(忽略大小寫)? gi: both global match and ignore case(匹配所有可能的值,也忽略大小寫)

注意:文本格式中的參數不要使用引號標記,而構造器函數的參數則要使用引號標記。所以下面的? 表達式建立同樣的正則表達式:? /ab+c/i?    new RegExp("ab+c", "i")

描述:? 當使用構造函數的時候,必須使用正常的字符串避開規則(在字符串中加入前導字符\ )是必須的。? 例如,下面的兩條語句是等價的:? re = new RegExp("\\w+")? re = /\w+/

下面的提供了在正則表達式中能夠使用的完整對特殊字符的一個完整的列表和描述。

表1.3:正則表達式中的特殊字符:

字符\? 意義:對于字符,通常表示按字面意義,指出接著的字符為特殊字符,\不作解釋。? 例如:/b/匹配字符'b',通過在b 前面加一個反斜杠\,也就是/\b/,則該字符變成特殊字符,表示? 匹配一個單詞的分界線。? 或者:? 對于幾個字符,通常說明是特殊的,指出緊接著的字符不是特殊的,而應該按字面解釋。? 例如:*是一個特殊字符,匹配任意個字符(包括0個字符);例如:/a*/意味匹配0個或多個a。? 為了匹配字面上的*,在a前面加一個反斜杠;例如:/a\*/匹配'a*'。

字符^? 意義:表示匹配的字符必須在最前邊。? 例如:/^A/不匹配"an A,"中的'A',但匹配"An A."中最前面的'A'。

字符$? 意義:與^類似,匹配最末的字符。? 例如:/t$/不匹配"eater"中的't',但匹配"eat"中的't'。

字符*? 意義:匹配*前面的字符0次或n次。? 例如:/bo*/匹配"A ghost booooed"中的'boooo'或"A bird warbled"中的'b',但不匹配"A goat g? runted"中的任何字符。

字符+? 意義:匹配+號前面的字符1次或n次。等價于{1,}。? 例如:/a+/匹配"candy"中的'a'和"caaaaaaandy."中的所有'a'。

字符?? 意義:匹配?前面的字符0次或1次。? 例如:/e?le?/匹配"angel"中的'el'和"angle."中的'le'。

字符.? 意義:(小數點)匹配除換行符外的所有單個的字符。? 例如:/.n/匹配"nay, an apple is on the tree"中的'an'和'on',但不匹配'nay'。

字符(x)? 意義:匹配'x'并記錄匹配的值。? 例如:/(foo)/匹配和記錄"foo bar."中的'foo'。匹配子串能被結果數組中的素[1], ..., [n] 返 回,或被RegExp對象的屬性$1, ..., $9返回。

字符x|y? 意義:匹配'x'或者'y'。? 例如:/green|red/匹配"green apple"中的'green'和"red apple."中的'red'。

字符{n}? 意義:這里的n是一個正整數。匹配前面的n個字符。? 例如:/a{2}/不匹配"candy,"中的'a',但匹配"caandy," 中的所有'a'和"caaandy."中前面的兩個? 'a'。

字符{n,}? 意義:這里的n是一個正整數。匹配至少n個前面的字符。? 例如:/a{2,}不匹配"candy"中的'a',但匹配"caandy"中的所有'a'和"caaaaaaandy."中的所有'a'

字符{n,m}? 意義:這里的n和m都是正整數。匹配至少n個最多m個前面的字符。? 例如:/a{1,3}/不匹配"cndy"中的任何字符,但匹配 "candy,"中的'a',"caandy," 中的前面兩個? 'a'和"caaaaaaandy"中前面的三個'a',注意:即使"caaaaaaandy" 中有很多個'a',但只匹配前面的三? 個'a'即"aaa"。

字符[xyz]? 意義:一字符列表,匹配列出中的任一字符。你可以通過連字符-指出一個字符范圍。? 例如:[abcd]跟[a-c]一樣。它們匹配"brisket"中的'b'和"ache"中的'c'。

字符[^xyz]? 意義:一字符補集,也就是說,它匹配除了列出的字符外的所有東西。 你可以使用連字符-指出一? 字符范圍。? 例如:[^abc]和[^a-c]等價,它們最早匹配"brisket"中的'r'和"chop."中的'h'。

字符[\b]? 意義:匹配一個空格(不要與\b混淆)

字符\b? 意義:匹配一個單詞的分界線,比如一個空格(不要與[\b]混淆)? 例如:/\bn\w/匹配"noonday"中的'no',/\wy\b/匹配"possibly yesterday."中的'ly'。

字符\B? 意義:匹配一個單詞的非分界線? 例如:/\w\Bn/匹配"noonday"中的'on',/y\B\w/匹配"possibly yesterday."中的'ye'。

字符\cX? 意義:這里的X是一個控制字符。匹配一個字符串的控制字符。? 例如:/\cM/匹配一個字符串中的control-M。

字符\d? 意義:匹配一個數字,等價于[0-9]。? 例如:/\d/或/[0-9]/匹配"B2 is the suite number."中的'2'。

字符\D? 意義:匹配任何的非數字,等價于[^0-9]。? 例如:/\D/或/[^0-9]/匹配"B2 is the suite number."中的'B'。

字符\f? 意義:匹配一個表單符

字符\n? 意義:匹配一個換行符

字符\r? 意義:匹配一個回車符

字符\s? 意義:匹配一個單個white空格符,包括空格,tab,form feed,換行符,等價于[ \f\n\r\t\v]。? 例如:/\s\w*/匹配"foo bar."中的' bar'。

字符\S? 意義:匹配除white空格符以外的一個單個的字符,等價于[^ \f\n\r\t\v]。? 例如:/\S/\w*匹配"foo bar."中的'foo'。

字符\t? 意義:匹配一個制表符

字符\v? 意義:匹配一個頂頭制表符

字符\w? 意義:匹配所有的數字和字母以及下劃線,等價于[A-Za-z0-9_]。? 例如:/\w/匹配"apple,"中的'a',"$5.28,"中的'5'和"3D."中的'3'。

字符\W? 意義:匹配除數字、字母外及下劃線外的其它字符,等價于[^A-Za-z0-9_]。? 例如:/\W/或者/[^$A-Za-z0-9_]/匹配"50%."中的'%'。

字符\n? 意義:這里的n是一個正整數。匹配一個正則表達式的最后一個子串的n的值(計數左圓括號)。

例如:/apple(,)\sorange\1/匹配"apple, orange, cherry, peach."中的'apple, orange',下面? 有一個更加完整的例子。? 注意:如果左圓括號中的數字比\n指定的數字還小,則\n取下一行的八進制escape作為描述。

字符\ooctal和\xhex? 意義:這里的\ooctal是一個八進制的escape值,而\xhex是一個十六進制的escape值,允許在一個? 正則表達式中嵌入ASCII碼。

當表達式被檢查的時候,文字符號提供了編輯正則表達式的方法。利用文字符號可以使到正則表達? 式保持為常數。例如,如果你在一個循環中使用文字符號來構造一個正則表達式,正則表達式不需進行? 反復編譯。? 正則表達式對象構造器,例如,new RegExp("ab+c"),提供正則表達式的運行時編譯。當你知道正? 則表達式的模式會變化的時候,應該使用構造函數,或者你不知道正則表達式的模式,而它們是從另外? 的源獲得的時候,比如由用戶輸入時。一旦你定義好了正則表達式,該正則表達式可在任何地方使用,? 并且可以改變,你可以使用編譯方法來編譯一個新的正則表達式以便重新使用。? 一個分離預先定義的RegExp對象可以在每個窗口中使用;也就是說,每個分離的JavaScript線程運? 行以獲得自己的RegExp對象。因為每個腳本在一個線程中是不可中斷的,這就確保了不同的腳本不會覆? 蓋RegExp對象的值。? 預定義的RegExp對象包含的靜態屬性:input, multiline, lastMatch,lastParen, leftContext,? rightContext, 以及從$1到$9。input和multiline屬性能被預設。其它靜態屬性的值是在執行個別正則? 表達式對象的exec和test方法后,且在執行字符串的match和replace方法后設置的。

屬性? 注意RegExp對象的幾個屬性既有長名字又有短名字(象Perl)。這些名字都是指向相同的值。Perl是? 一種編程語言,而JavaScript模仿了它的正則表達式。

屬性$1, ..., $9? 取得匹配的子串,如果有的話

屬性$_? 參考input

屬性$*? 參考multiline

屬性$&? 參考lastMatch

屬性$+? 參考lastParen

屬性$`? 參考leftContext

屬性$'? 參考rightContext

屬性constructor? 指定用來建立對象原型函

屬性global? 決定是否測試正則表達式是否不能匹配所有的字符串,或者只是與最先的沖突。

屬性ignoreCase? 決定試圖匹配字符串的時候是否忽略大小寫

屬性input? 當正則表達式被匹配的時候,為相反的字符串。

屬性lastIndex? 決定下一次匹配從那里開始

屬性lastMatch? 最后一個匹配的字符

屬性lastParen? 子串匹配的時候,最后一個parenthesized,如果有的話。

屬性leftContext? 最近一次匹配前的子串。

屬性multiline? 是否在串的多行中搜索。

屬性prototype? 允許附加屬性到所有的對象

屬性rightContext? 最近一次匹配后的的子串。

屬性source? 模式文本

?

方法? compile方法? 編譯一個正則表達式對象

exec方法? 運行正則表達式匹配

test方法? 測試正則達式匹配

toSource方法? 返回一個對象的文字描述指定的對象;你可以使用這個值來建立一個新的對象。不考慮Object.toS? ource方法。

toString方法? 返回一個字符串描述指定的對象,不考慮Object.toString對象。

valueOf方法? 返回指定對角的原始值。不考慮Object.valueOf方法。

 另外,這個對象繼承了對象的watch和unwatch方法

   例子:?    例1、下述示例腳本使用replace方法來轉換串中的單詞。在替換的文本中,腳本使用全局 RegExp? 對象的$1和$2屬性的值。注意,在作為第二個參數傳遞給replace方法的時候,RegExp對象的$屬性的名? 稱。? <SCRIPT LANGUAGE="JavaScript1.2">? re = /(\w+)\s(\w+)/;? str = "John Smith";? newstr=str.replace(re,"$2, $1");? document.write(newstr)? </SCRIPT>? 顯示結果:"Smith, John".

  例2、下述示例腳本中,RegExp.input由Change事件處理句柄設置。在getInfo函數中,exec 方法? 使用RegExp.input的值作為它的參數,注意RegExp預置了$屬性。

<SCRIPT LANGUAGE="JavaScript1.2">? function getInfo(abc)? {? re = /(\w+)\s(\d+)/;? re.exec(abc.value);? window.alert(RegExp.$1 + ", your age is " + RegExp.$2);? }? </SCRIPT>

  請輸入你的姓和年齡,輸入完后按回車鍵。?    <FORM><INPUT TYPE="TEXT" NAME="NameAge" onChange="getInfo(this);"></FORM>?    </HTML>

$1, ..., $9屬性? 用圓括號括著的匹配子串,如果有的話。? 是RegExp的屬性? 靜態,只讀

在JavaScript 1.2, NES 3.0以上版本提供? 描述:因為input是靜態屬性,不是個別正則表達式對象的屬性。你可以使用RegExp.input 訪問該? 屬性。

能加上圓括號的子串的數量不受限制,但正則表達式對象只能保留最后9 條。如果你要訪問所有的? 圓括號內的匹配字串,你可以使用返回的數組。

這些屬性能用在RegExp.replace方法替換后的字符串(輸出結果)。當使用這種方式的時候,不用預? 先考慮RegExp對象。下面給出例子。當正則表達式中沒有包含圓括號的時候,該腳本解釋成$n的字面意? 義。(這里的n是一個正整數)。

例如:? 下例腳本使用replace 方法來交換串中單詞的位置。在替換后的文本字串中,腳本使用正則表達式? RegExp對象的$1和$2屬性的值。注意:當它們向replace方法傳遞參數的時候,這里沒有考慮 $ 屬性的? RegExp對象的名稱。? <SCRIPT LANGUAGE="JavaScript1.2">? re = /(\w+)\s(\w+)/;? str = "John Smith";? newstr=str.replace(re,"$2, $1");? document.write(newstr)? </SCRIPT>? 顯示的輸出結果為:Smith, John。?

?

正則表達式regular expression詳述(二)? http://www.kymita.com/888.asp 2002-12-15 藍箭工作室

正則表達式詳述(二)

以下這些不是正則表達式的新增對象請參閱對應的JavaScript對象的屬性 $_屬性 參考input $*屬性? 參考multiline $&屬性 參考lastMatch $+屬性 參考lastParen $`屬性? 參考leftContext $'屬性 參考rightContext compile方法 在腳本運行期間編譯正則表達式對象? 屬于RegExp的方法 在JavaScript 1.2, NES 3.0以上版本提供 語法:? regexp.compile(pattern[, flags]) 以數: regexp 正則表達式的名稱,可以是變量名或文字串。? pattern 正則表達式的定義文本。 flags 如果指定的話,可以是下面其中的一個: "g": 匹配所有可能的字串? "i": 忽略大小寫 "gi": 匹配所有可能的字串及忽略大小寫 描述:? 使用compile方法來編譯一個正則表達式 created with the RegExp constructor function。這樣? 就強制正則表達式只編譯一次,而不是每次遇到正則表達式的時候都編譯一次。當你確認正則表達式能? 保持不變的時候可使用compile 方法來編譯它(在獲得它的匹配模式后),這樣就可以在腳本中重復多次使用它。? 你亦可以使用compile 方法來改變在運行期間改變正則表達式。例如,假如正則表達式發生變化,? 你可以使用compile方法來重新編譯該對象來提高使用效率。? 使用該方法將改變正則表達式的source, global和ignoreCasesource屬性的值。 constructor? 指出建立對象原型的function。注意這個屬性的值由函數本身提供,而不是一個字串包含RegExp的name.Property提供。? 在JavaScript 1.1, NES 2.0以上版本提供 ECMA版本ECMA-262 描述:參考Object.constructor.? exec方法 在指定的字符串運行匹配搜索。返回一個結果數組。 是RegExp的方法? 在JavaScript 1.2, NES 3.0以上版本提供 語法: regexp.exec([str])regexp([str])? 參數: regexp,正則表達式的名稱,可以是一個變量名或文字定義串。? str,要匹配正則表達式的字符串,如果省略,將使用RegExp.input的值。? 描述:就如在語法描述中的一樣,正則表達工的exec方法能夠被直接調用(使用regexp.exec(str))或者間接調用(使用regexp(str))。? 假如你只是運行以找出是否匹配,可以使用String搜索方法。? 假如匹配成功,exec方法返回一個數組并且更新正則表達式對象屬性的值和預先定義的正則表達式對象、RegExp。如果匹配失敗,exec方法返回null。? 請看下例: <SCRIPT LANGUAGE="JavaScript1.2"> //匹配一個b接著一個或多個d,再接著一個b? //忽略大小寫 myRe=/d(b+)(d)/ig; myArray = myRe.exec("cdbBdbsbz");? </SCRIPT> 下面是該腳本的返回值:對象 屬性/Index 描述 例子? myArray

myArray的內容 ["dbBd", "bB", "d"]? index? 基于0的匹配index 1? input? 原始字符串 cdbBdbsbz? [0]? 最后匹配的字符 dbBd? [1], ...[n]? 用圓括號括住的匹配字符串,如果有的話。不限制括號的個數。 [1] = bB? [2] = d? myRe? lastIndex? 開始下次匹配操作的index值 5? ignoreCase? 指出"i"是否使用以忽略大小寫 true? global? 指出是否使用"g"標記來進行匹配所有可能的字串 true? source? 定義模式的文本字符串 d(b+)(d)? RegExp? lastMatch$&? 最后匹配的字符 dbBd? leftContext$\Q? 最新匹配前面的子串 c? rightContext$'? 最新匹配后面的子串 bsbz? $1, ...$9? 圓括號內的匹配子串,如果有的話。圓括號的個數不受限制,但RegExp只能保留最后9個 $1 = bB? $2 = d? lastParen $+? 最后一個加上圓括號的匹配子串,如果有的話 d

假如你的正則表達式使用了"g"標記,你可以多次使用exec 方法來連續匹配相同的串。當你這樣做? 的時候,新的匹配將從由正則表達式的lastIndex 屬性值確定的子串中開始。例如,假定你使用下面的腳本:? <SCRIPT LANGUAGE="JavaScript1.2"> myRe=/ab*/g;str = "abbcdefabh"? myArray = myRe.exec(str);? document.writeln("Found "+myArray[0]+". Next match starts at "+myRe.lastIndex)? mySecondArray = myRe.exec(str);? document.writeln("Found "+mySecondArray[0]+". Next match starts at "+myRe.lastIndex)? </SCRIPT> 這個腳本顯示如下結果: Found abb. Next match starts at 3? Found ab. Next match starts at 9 例子:? 在下面的例子中,用戶輸入一個名字,腳本根據輸入執行匹配操作。接著檢查數組看是否和其它用戶的名字匹配。? 本腳本假定已注冊的用戶的姓已經存進了數組A中,或許從一個數據庫中取得。 <HTML>? <SCRIPT LANGUAGE="JavaScript1.2"> A = ["zhao","qian","sun","li","liang"]? function lookup() { firstName = /\w+/i(); if (!firstName)? window.alert (RegExp.input + "非法輸入"); else { count=0;? for (i=0;i 輸入你的姓然后按回車鍵。? <FORM><INPUT TYPE:"TEXT" NAME="FirstName" onChange="lookup(this);"></FORM>? </HTML> global屬性 正則表達式中是否使用了"g"標記。 RegExp屬性,只讀? 在JavaScript 1.2, NES 3.0以上版本提供 描述: global是一個個別正則表達式對象的屬性? 如果使用了"g"標記,global的值為true;否則為 false。"g"標記指定正則表達式測試所有可能的匹配。? 你不能直接改變該屬性的值,但可以調用compile方法來改變它。 ignoreCase 檢查正則表達式是否使用了"i"標記? RegExp屬性,只讀 在JavaScript 1.2, NES 3.0以上版本提供 描述:? ignoreCase是個別正則表達式對象的一個屬性。? 如果使用了"i"標記,則返回true,否則返回false。"i"標記指示在進行匹配的時候忽略大小寫。 你不能直接改變該屬性的值,但可以通過調用compile方法來改變它 input 指出正則表達式要測試那個字串。$_是這個屬性的另一個名字。? RegExp的屬性,靜態 在JavaScript 1.2, NES 3.0以上版本提供? 描述:因為input是靜態的,不是某個個別的正則表達式對象的屬性。你也可以使用 RegExp.input來表示。? 如果沒有給正則表達式的exec或test方法提供字符串,并且RegExp.input中有值,則使用它的值來調用該方法。? 腳本或瀏覽器能夠預置input屬性。如果被預置了值且調用exec或 test方法的時候沒有提供字符串? 則調用exec或test的時候使用input的值。input可以被瀏覽器以下面的方式設置:? 當text表單域處理句柄被調用的時候,input被設置為該text輸入的字串。? 當textarea表單域處理句柄被調用的時候,input被設置為textarea域內輸入的字串。注意multili? ne亦被設置成true從而能匹配多行文本。 當select表單域處理句柄被調用的時候,input被設置成selected text的值。? 當鏈接對象的處理句柄被調用的時候,input被設置成<A HREF=...>和</A>之間的字符串。? 事件理現句柄處理完畢后,input屬性的值被清除。 lastIndex 可讀/可寫的一個整數屬性,指出下一次匹配從哪里開始。? RegExp的屬性 在JavaScript 1.2, NES 3.0以上版本提供? 描述:lastIndex 是個別的正則表達式對象的屬性。 這個屬性只有當正則表達式的"g"標記被使用以進行全串匹配的時候才被設置。實行以下規則:? 如果lastIndex大小字符串的長度,regexp.test和regexp.exec失敗,且lastIndex被設為0。? 如果lastIndex等于字串的長度且正則表達式匹配空字符串,則正則表達式從lastIndex的位置開始匹配。? 如果lastIndex等于字符串的長度且正則表達式不匹配空字符串,則正則表達式不匹配input,且lastIndex被置為0。? 否則,lastIndex被設置成最近一次匹配的下一點。 例如,按下面的順序執行腳本: re = /(hi)?/g 匹配空字符串? re("hi") 返回["hi", "hi"],lastIndex置為2? re("hi") 返回[""],一個空數組,它的下標為0的元素就是匹配字符串。在這種情況下,返回空 串是因為lastIndex等于2(且仍然是2),并且"hi"的長度也是2。 lastMatch 最后一次匹配字符串,$&是同樣的意思。? RegExp的屬性,靜態,只讀 在JavaScript 1.2, NES 3.0以上版本提供? 描述:因為lastMatch是靜態的,所以它不是個別指定正則表達式的屬性。你也可以使用RegExp.lastMatch。 lastParen? 最后一次加上括號的匹配字符串,如果有的話。$+是同樣的意思。 RegExp屬性,靜態,只讀 在JavaScript 1.2, NES 3.0以上版本提供? 描述:因為lastParen是靜態的,它不是某個個別正則式的屬性,你可以使用RegExp.lastParen 表達同樣的意思。? leftContext 最近一次匹配前面的子串,$`具有相同的意思。 RegExp的屬性,靜態,只讀? 在JavaScript 1.2, NES 3.0以上版本提供? 描述:因為leftContext是靜態的,不是某一個正則表達式的屬性,所以可以使用RegExp.leftContext來表達想同的意思。? multiline 反映是否匹配多行文本,$*是相同的意思。 RegExp的屬性,靜態? 在JavaScript 1.2, NES 3.0以上版本提供? 描述:因為multiline是靜態的,而不是某個個別正則表達式的屬性,所以能夠用RegExp.multiline表達相同的意思。? 如果允許匹配多行文本,則multiline為true,如果搜索必須在換行時停止,則為false。? 腳本或瀏覽器能夠設置multiline屬性。當一個textarea的事件處理句柄被調用的時候,multiline? 被置為true。在事件處理句柄處理完畢后,multiline屬性值被清除。也就是說,如果你設置了multili? ne為true,則執行任何的事件處理句柄后,multiline被置為false。 prototype? 描繪類的原型。你可以根據要求使用prototype來增加類的屬性或方法。為了獲得prototypes 的資? 料,請參閱RegExp的Function.prototype.Property屬性。 從JavaScript 1.1, NES 2.0版本開始提供? ECMA版本ECMA-262 rightContext 最后一次匹配的右邊的字符串,$'是同樣的效果。? RegExp的屬性,靜態,只讀 從 JavaScript 1.2, NES 3.0以上版本開始提供? 描述:因為rightContext是靜態的,不是某個個別正則表達工的屬性,可以使用RegExp.rightContext來達到相同的效果。? source 一個只讀屬性,包含正則表達式定義的模式,不包僑forward slashes和"g"或"i"標記。 RegExp的屬性,只讀? 從JavaScript 1.2, NES 3.0以上版本開始提供? 描述:source是個別正則表達式對象的屬性,你不能直接改變它的值,但可以通過調用compile 方法來改變它。 test? 執行指定字符串的正則表達式匹配搜索,返回true或false。 RegExp的方法? 從JavaScript 1.2, NES 3.0以上版本開始提供 語法:regexp.test([str])? 參數:regexp,正則表達式的名稱,可以是變量名或正則表達式定義文字串? str,要匹配的字符串,如果省略,將使用RegExp.input的值為作參數? 描述:當你需要知道一個字符串能否匹配某個正則表達工,可以使用test方法(與String.search方? 法類似); 為了獲得更多的信息(但速度將變慢),可以使用exec方法(與String.match方法類似)。 例子:下面的例子顯示test是否成功的提示:? function testinput(re, str){? if (re.test(str)) midstring = " contains ";? else midstring = " does not contain ";? document.write (str + midstring + re.source); } toSource? 返回一個字符串象征對象的源碼 RegExp的方法 從JavaScript 1.3以上版本開始提供 語法:toSource()? 參數:沒有 描述:toSource方法返回下述的值: 對于內置的RegExp對象,toSource返回下面的字符象征源碼不可用:? function Boolean(){ [native code] }? 在RegExp場合中, toSource返回象征源碼的字符串,通常這個方法是由JavaScript內部自動調用而不是不代碼中顯式調用。? 更多請看Object.toSource toString 返回描繪指定對象的字符串。 RegExp的方法? 從JavaScript 1.1, NES 2.0開始提供 ECMA版本ECMA-262 語法:toString() 參數:無? 描述:RegExp對象不考慮Object對象的toString方法;它不繼承Object.toString,對于RegExp 對? 象,toString方法返回一個代表該對象的字符串。 例如:下面的例子顯示象征RegExp對象的字符串? myExp = new RegExp("a+b+c"); alert(myExp.toString())? displays "/a+b+c/" 更多請看:Object.toString valueOf 返回一個RegExp對象的原始值? RegExp的方法 從JavaScript 1.1版本開始提供 ECMA版本:ECMA-262 語法:valueOf()? 參數:無 描述:RegExp的valueOf方法以字符串形式返回RegExp對象的原始值,這個值與RegExp.toString相等。? 該方法通常由JavaScript內部自動調用而不是顯式調用 例子: myExp = new RegExp("a+b+c");? alert(myExp.valueOf()) displays "/a+b+c/"?

?

?

正則表達式在javascript中的幾個實例1(轉)

! 去除字符串兩端空格的處理?
如果采用傳統的方式,就要可能就要采用下面的方式了? //清除左邊空格? function js_ltrim(deststr)? {? if(deststr==null)return "";? var pos=0;? var retStr=new String(deststr);? if (retStr.lenght==0) return retStr;? while (retStr.substring(pos,pos+1)==" ") pos++;? retStr=retStr.substring(pos);? return(retStr);? }? //清除右邊空格? function js_rtrim(deststr)? {? if(deststr==null)return "";? var retStr=new String(deststr);? var pos=retStr.length;? if (pos==0) return retStr;? while (pos && retStr.substring(pos-1,pos)==" " ) pos--;? retStr=retStr.substring(0,pos);? return(retStr);? }? //清除左邊和右邊空格? function js_trim(deststr)? {? if(deststr==null)return "";? var retStr=new String(deststr);? var pos=retStr.length;? if (pos==0) return retStr;? retStr=js_ltrim(retStr);? retStr=js_rtrim(retStr);? return retStr;? }?
采用正則表達式,來去除兩邊的空格,只需以下代碼? String.prototype.trim = function()? {? return this.replace(/(^\s*)|(\s*$)/g, "");? }?
一句就搞定了,? 可見正則表達式為我們節省了相當的編寫代碼量?
! 移動手機號的校驗?
如果采用傳統的校驗方式至少就要完成下面三步的校驗,? (1). 是否是數字? (2).是否是11位? (3).數字的第三位是否是5,6,7,8,9? 如果采用正則表達式校驗,只需以下代碼? function checkMobile1(form)? {? if (form.mobile.value > "")? {? var reg=/13[5,6,7,8,9]\d{8}/;? if ( form.mobile.value.match(reg)== null)? {? alert("請輸入正確的移動手機號碼!");? form.mobile.focus(); return false;? }? }? return true;? }?
從上面的代碼可以看出校驗移動手機號只需定義一個var reg=/13[5,6,7,8,9]\d{8}/;模式匹配串就可以完成合法性校驗了?
! URL的校驗,? 條件:必須以http:// 或 https:// 開頭, 端口號必須為在1-65535 之間, 以下代碼完成了合法性校驗?
//obj:數據對象? //dispStr :失敗提示內容顯示字符串? function checkUrlValid( obj, dispStr)? {? if(obj == null)? {? alert("傳入對象為空");? return false;? }? var str = obj.value;?
var urlpatern0 = /^https?:\/\/.+$/i;? if(!urlpatern0.test(str))? {? alert(dispStr+"不合法:必須以'http:\/\/'或'https:\/\/'開頭!");? obj.focus();? return false;? }?
var urlpatern2= /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?.+$/i;? if(!urlpatern2.test(str))? {? alert(dispStr+"端口號必須為數字且應在1-65535之間!");? obj.focus();? return false;? }?
var urlpatern1 =/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i;?
if(!urlpatern1.test(str))? {? alert(dispStr+"不合法,請檢查!");? obj.focus();? return false;? }?
var s = "0";? var t =0;? var re = new RegExp(":\\d+","ig");? while((arr = re.exec(str))!=null)? {? s = str.substring(RegExp.index+1,RegExp.lastIndex);?
if(s.substring(0,1)=="0")? {? alert(dispStr+"端口號不能以0開頭!");? obj.focus();? return false;? }?
t = parseInt(s);? if(t<1 || t >65535)? {? alert(dispStr+"端口號必須為數字且應在1-65535之間!");? obj.focus();? return false;? }? }? return true;? }?
對url的校驗,看上去有很多的代碼,這是因為要給予出錯提示, 否則只需var urlpatern1 =/^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i; 一句就可以校驗出url合法性了

?

?

?

?
正則表達式在JavaScript應用
?
時間戳: 2004-11-30 15:29:30 人氣: 23
作者: AnyRock 來源:www.mending.cn
?
--------------------------------------------------------------? 去掉字符串頭尾多余的空格? /g是全文查找所有匹配?
function String.prototype.Trim(){return this.replace(/(^\s*)|(\s*$)/g, "");}?
function String.prototype.LTrim(){return this.replace(/(^\s*)/g, "");}?
function String.prototype.RTrim(){return this.replace(/(\s*$)/g, "");}?
--------------------------------------------------------------? 應用:計算字符串的長度(一個雙字節字符長度計2,ASCII字符計1)?
String.prototype.len=function(){return this.replace([^\x00-\xff]/g,"aa").length;}?
--------------------------------------------------------------? 應用:javascript中沒有像vbscript那樣的trim函數,我們就可以利用這個表達式來實現,如下:?
String.prototype.trim = function()? {? return this.replace(/(^\s*)|(\s*$)/g, "");? }? 得用正則表達式從URL地址中提取文件名的javascript程序,如下結果為page1?
s="http://www.9499.net/page1.htm"? s=s.replace(/(.*\/){0,}([^\.]+).*/ig,"$2")? alert(s)?
##利用正則表達式限制網頁表單里的文本框輸入內容:?
--------------------------------------------------------------? 用正則表達式限制只能輸入中文:οnkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\u4E00-\u9FA5]/g,'))"?
--------------------------------------------------------------? 用正則表達式限制只能輸入全角字符: οnkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,')" onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\uFF00-\uFFFF]/g,'))"?
--------------------------------------------------------------? 用正則表達式限制只能輸入數字:οnkeyup="value=value.replace(/[^\d]/g,') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,'))"
--------------------------------------------------------------? 用正則表達式限制只能輸入數字和英文:οnkeyup="value=value.replace(/[\W]/g,') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,'))"
?
最近更新: AnyRock 2004-11-30 15:38:2返回頁首
?

?

用正則表達式和javascript對表單進行全面驗證

代碼:<!--? 使用時請將下面的javascript代碼存到一個單一的js文件中。? 1、表單要求? <form name="formname" onSubmit="return validateForm(this)"></form>? 將對表單中的所有以下類型的域依次驗證,所有驗證是去除了前導和后綴空格的,要注意是區分大小寫的。? 2、空值驗證? 表單中任意域加上emptyInfo屬性將對此域是否為空進行驗證(可以和最大長度驗證\一般驗證方式同時使用)。? 無此屬性視為此域允許空值。?    如:<input type="text" name="fieldNamename" emptyInfo="字段不能為空!">? 3、最大長度驗證(可以和空值驗證、一般驗證方式同時使用):? <input type="text" name="fieldNamename" maxlength="20" lengthInfo="最大長度不能超過20!">? 或,<textarea maxlength="2000" lengthInfo="最大長度不能超過2000!">? 3、一般驗證方式(不對空值做驗證):?    如:<input type="text" validator="^(19|20)[0-9]{2}$" errorInfo="不正確的年份!" >? 4、標準驗證(不與其它驗證方式同時使用):? 全部通過<input type="hidden">來實現,并且不需要name屬性以免提交到服務器。?    4.1、合法日期驗證:? <input type="text" name="yearfieldName" value="2004">注:這里也可以是<select name="yearfieldName"></select>,以下同? <input type="text" name="monthfieldName" value="02">? <input type="text" name="dayfieldName" value="03">? <input type="hidden" validatorType="DateGroup" year="yearfieldName" month="monthfieldName" day="dayfieldName" errorInfo="不正確的日期!">? yearfieldName、monthfieldName、dayfieldName分別為年月日字段,月和日可以是兩位(MM)或一位格式(M),? 此處不對每個字段分別檢驗(如果要檢驗,請在年月日三個域分別使用前面的一般驗證方式),只對日期的最大值是否合法檢查;? 4.2、日期格式驗證(請注意,此驗證不對日期是否有效進行驗證,還未找到從格式中得到年月日數據的方法^_^):? <input type="text" name="datefieldName" value="2003-01-03 21:31:00">? <input type="hidden" validatorType="Date" fieldName="datefieldName"; format="yyyy-MM-dd HH:mm:ss" errorInfo="不正確的日期!">? 其中格式僅對y、M、d、H、m、s進行支持(其它字符視為非時間的字符)? 4.3、列表驗證:? 檢驗列表(checkbox、redio、select)是否至少選中了一條記錄(對select主要用于多項選擇)? <input type="checkbox" name="checkbox1">? <input type="hidden" validatorType="Checkbox" fieldName="checkbox1" errorInfo="請至少選中一條記錄!">? 其中validatorType可以是Checkbox、R、Select;? 對于一個select表單,如果要求選擇一條不能是第一條的記錄,請用下列方式:? <select name="select1" emptyInfo="請選擇一個選項!">? <option value="">==請選擇==</option>? <option value="1">1</option>? <select>? 4.4、Email驗證:? <input type="text" name="email">? <input type="hidden" fieldName="email" validatorType="Email" separator="," errorInfo="不正確的Email!">? 其中separator為可選項,表示輸入多個email時的分隔符(無此選項只能是一個地址)? 4.5、加入其它javascript操作:? <script type="text/javascript">? function functionname(){? 自定義方法? }? </script>? 表單中加入<input type="hidden" validatorType="javascript" functionName="functionname">(此時emptyInfo等屬性無效)? 時將調用function屬性中指定的javascript方法(要求方法返回true或false,返回false將不再驗證表單,也不提交表單)。? 5、在表單通過驗證提交前disable一個按鈕(也可將其它域disable,不能與其它驗證同在一個域),不要求按鈕是表單中的最后一個? <input type="button" name="提交" validatorType="disable">? 6、不驗證表單?    <input type="hidden" name="validate" value="0" functionName="functionname">? 當validator域值為0時不對表單進行驗證,直接提交表單或執行指定function并返回true后提交表單? functionName為可選

-->? <script type="text/javascript">? function getStringLength(str){? var endvalue=0;? var sourcestr=new String(str);? var tempstr;? for (var strposition = 0; strposition < sourcestr.length; strposition ++) {? tempstr=sourcestr.charAt(strposition);? if (tempstr.charCodeAt(0)>255 || tempstr.charCodeAt(0)<0) {? endvalue=endvalue+2;? } else {? endvalue=endvalue+1;? }? }? return(endvalue);? }? function trim(str){? if(str==null) return "";? if(str.length==0) return "";? var i=0,j=str.length-1,c;? for(;i<str.length;i++){? c=str.charAt(i);? if(c!=' ') break;? }? for(;j>-1;j--){? c=str.charAt(j);? if(c!=' ') break;? }? if(i>j) return "";? return str.substring(i,j+1);? }? function validateDate(date,format,alt){? var time=trim(date.value);? if(time=="") return;? var reg=format;? var reg=reg.replace(/yyyy/,"[0-9]{4}");? var reg=reg.replace(/yy/,"[0-9]{2}");? var reg=reg.replace(/MM/,"((0[1-9])|1[0-2])");? var reg=reg.replace(/M/,"(([1-9])|1[0-2])");? var reg=reg.replace(/dd/,"((0[1-9])|([1-2][0-9])|30|31)");? var reg=reg.replace(/d/,"([1-9]|[1-2][0-9]|30|31))");? var reg=reg.replace(/HH/,"(([0-1][0-9])|20|21|22|23)");? var reg=reg.replace(/H/,"([0-9]|1[0-9]|20|21|22|23)");? var reg=reg.replace(/mm/,"([0-5][0-9])");? var reg=reg.replace(/m/,"([0-9]|([1-5][0-9]))");? var reg=reg.replace(/ss/,"([0-5][0-9])");? var reg=reg.replace(/s/,"([0-9]|([1-5][0-9]))");? reg=new RegExp("^"+reg+"$");? if(reg.test(time)==false){//驗證格式是否合法? alert(alt);? date.focus();? return false;? }? return true;? }? function validateDateGroup(year,month,day,alt){? var array=new Array(31,28,31,30,31,30,31,31,30,31,30,31);? var y=parseInt(year.value);? var m=parseInt(month.value);? var d=parseInt(day.value);? var maxday=array[m-1];? if(m==2){? if((y%4==0&&y%100!=0)||y%400==0){? maxday=29;? }? }? if(d>maxday){? alert(alt);? return false;? }? return true;? }? function validateCheckbox(obj,alt){? var rs=false;? if(obj!=null){? if(obj.length==null){? return obj.checked;? }? for(i=0;i<obj.length;i++){? if(obj[i].checked==true){? return true;? }? }? }? alert(alt);? return rs;? }? function validateRadio(obj,alt){? var rs=false;? if(obj!=null){? if(obj.length==null){? return obj.checked;? }? for(i=0;i<obj.length;i++){? if(obj[i].checked==true){? return true;? }? }? }? alert(alt);? return rs;? }? function validateSelect(obj,alt){? var rs=false;? if(obj!=null){? for(i=0;i<obj.options.length;i++){? if(obj.options[i].selected==true){? return true;? }? }? }? alert(alt);? return rs;? }? function validateEmail(email,alt,separator){? var mail=trim(email.value);? if(mail=="") return;? var em;? var myReg = /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/;? if(separator==null){? if(myReg.test(email.value)==false){? alert(alt);? email.focus();? return false;? }? }? else{? em=email.value.split(separator);? for(i=0;i<em.length;i++){? em[i]=em[i].trim();? if(em[i].length>0&&myReg.test(em[i])==false){? alert(alt);? email.focus();? return false;? }? }? }? return true;? }? function validateForm(theForm){// 若驗證通過則返回true? var disableList=new Array();? var field = theForm.elements; // 將表單中的所有元素放入數組? for(var i = 0; i < field.length; i++){? var vali=theForm.validate;? if(vali!=null){? if(vali.value=="0"){? var fun=vali.functionName;? if(fun!=null){? return eval(fun+"()");? }? else{? return true;? }? }? }

var empty=false;? var value=trim(field[i].value);? if(value.length==0){//是否空值? empty=true;? }? var emptyInfo=field[i].emptyInfo;//空值驗證? if(emptyInfo!=null&&empty==true){? alert(emptyInfo);? field[i].focus();? return false;? }? var lengthInfo=field[i].lengthInfo;//最大長度驗證? if(lengthInfo!=null&&getStringLength(value)>field[i].maxLength){? alert(lengthInfo);? field[i].focus();? return false;? }

var validatorType=field[i].validatorType;? if(validatorType!=null){//其它javascript? var rs=true;? if(validatorType=="javascript"){? eval("rs="+field[i].functionName+"()");? if(rs==false){? return false;? }? else{? continue;? }? }? else if(validatorType=="disable"){//提交表單前disable的按鈕? disableList.length++;? disableList[disableList.length-1]=field[i];? continue;? }? else if(validatorType=="Date"){? rs=validateDate(theForm.elements(field[i].fieldName),field[i].format,field[i].errorInfo);? }? else if(validatorType=="DateGroup"){? rs=validateDateGroup(theForm.elements(field[i].year),theForm.elements(field[i].month),theForm.elements(field[i].day),field[i].errorInfo); }? else if(validatorType=="Checkbox"){? rs=validateCheckbox(theForm.elements(field[i].fieldName),field[i].errorInfo);? }? else if(validatorType=="Radio"){? rs=validateRadio(theForm.elements(field[i].fieldName),field[i].errorInfo);? }? else if(validatorType=="Select"){? rs=validateSelect(theForm.elements(field[i].fieldName),field[i].errorInfo);? }? else if(validatorType=="Email"){? rs=validateEmail(theForm.elements(field[i].fieldName),field[i].errorInfo);? }? else{? alert("驗證類型不被支持, fieldName: "+field[i].name);? return false;? }? if(rs==false){? return false;? }? }? else{//一般驗證? if(empty==false){? var v = field[i].validator; // 獲取其validator屬性? if(!v) continue; // 如果該屬性不存在,忽略當前元素? var reg=new RegExp(v);? if(reg.test(field[i].value)==false){? alert(field[i].errorInfo);? field[i].focus();? return false;? }? }? }? }? for(i=0;i<disableList.length;i++){? disableList[i].disabled=true;? }? return true;? }? </script>

轉載于:https://www.cnblogs.com/handafeng/archive/2013/02/17/2914012.html

總結

以上是生活随笔為你收集整理的正则表达式摘录的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

午夜成人免费影院 | 97理论片| 亚洲国产精品999 | 在线观看黄色免费视频 | 欧美精品久久久久 | 久久久久99精品国产片 | 四虎在线视频免费观看 | 91日韩在线 | 精品福利视频在线观看 | 人人爽人人爽人人爽学生一级 | 久久丁香 | 日韩精品一区二区免费视频 | 天天操天天射天天爱 | 久草在线免费看视频 | 久久免费视频在线观看 | 天天操天天爱天天干 | 国产精品video爽爽爽爽 | 99欧美视频| 欧美久久综合 | 人人搞人人搞 | 成年人在线免费视频观看 | 干干夜夜 | 久久久久久欧美二区电影网 | 国产亚洲精品日韩在线tv黄 | www.亚洲激情.com | 久久久综合九色合综国产精品 | 亚洲欧美国产精品 | 婷婷5月激情5月 | 男女激情麻豆 | 免费在线观看一区二区三区 | 伊人婷婷综合 | 久久黄色免费视频 | 不卡中文字幕在线 | 久久综合精品国产一区二区三区 | 91av视频在线观看免费 | 中文字幕色网站 | 久久九九影视网 | 日日操网 | 碰超在线 | 天天玩天天操天天射 | 久久这里 | 91看片麻豆 | 国产99久久九九精品 | 亚洲狠狠丁香婷婷综合久久久 | 天天操天天操天天干 | 欧产日产国产69 | 国产精品久久中文字幕 | 久9在线 | 国产高清第一页 | 日韩高清不卡一区二区三区 | 亚洲精品ww | 麻豆国产在线播放 | 日韩在线观看网站 | 黄色片免费电影 | 91免费高清 | 亚洲黄色av | www.99在线观看 | 黄色字幕网 | 精品在线99 | 免费看黄色91 | 五月婷婷激情综合 | 天天操天天操天天干 | 91高清免费| 亚洲精品国产综合99久久夜夜嗨 | 亚洲欧美精品一区 | 美女在线免费观看视频 | 精品中文字幕视频 | 人人干人人超 | 精品美女国产在线 | www.夜色321.com| av观看免费在线 | 成年美女黄网站色大片免费看 | 久久视频国产精品免费视频在线 | 免费成人短视频 | 国产麻豆视频免费观看 | 日韩欧美国产激情在线播放 | 一级片色播影院 | 亚洲精品中文字幕在线观看 | 99中文视频在线 | 在线观看免费黄视频 | 91久久久久久久 | 亚洲国产免费 | 精品久久久一区二区 | 免费在线国产精品 | 国产五月天婷婷 | 日韩v在线| 五月开心六月伊人色婷婷 | 日本三级国产 | 精品国产精品久久一区免费式 | 亚洲精品乱码久久久久久9色 | 日韩首页| 六月丁香六月婷婷 | 天躁狠狠躁 | 免费成人在线观看视频 | 中文字幕乱码电影 | 日韩av图片 | 亚洲精品乱码久久久久久蜜桃动漫 | 亚洲爽爽网 | 黄色不卡av| 欧美一级淫片videoshd | 中文字幕在线观看2018 | 日b视频在线观看网址 | 激情欧美xxxx | 一区 在线 影院 | 国产婷婷色| 亚洲片在线 | 天天干天天操人体 | 久青草国产在线 | 中文字幕在线观看第一区 | 人人爽久久久噜噜噜电影 | 三上悠亚在线免费 | 97福利在线观看 | 久久热首页 | 日韩激情片在线观看 | 丁香激情综合久久伊人久久 | 成人午夜影视 | 久草在线资源免费 | 亚洲精选久久 | 综合色影院 | 青草草在线视频 | 国产在线精品视频 | 开心丁香婷婷深爱五月 | 97超碰人人模人人人爽人人爱 | 国产精品一区免费观看 | 中文字幕无吗 | 欧美一区三区四区 | 国产精品一区二区久久 | 免费a现在观看 | 黄色国产精品 | 欧美色插| 国模视频一区二区三区 | 精品无人国产偷自产在线 | 亚洲精品国产精品国自产 | 最近2019好看的中文字幕免费 | 免费看成年人 | 日日夜色| 中文字幕亚洲欧美 | 69久久99精品久久久久婷婷 | 成人免费观看a | 一区二区三区在线免费观看 | 视频福利在线观看 | 免费观看福利视频 | 成人午夜毛片 | 国产日韩精品久久 | 成人在线免费视频观看 | 成 人 a v天堂 | 免费看特级毛片 | 欧美日韩国产免费视频 | 亚洲精品免费在线观看 | 亚洲成人av在线 | 99精品国产免费久久久久久下载 | 在线观看亚洲精品 | 人人玩人人爽 | 欧美有色| 国产精品第7页 | 在线欧美小视频 | 精品国产精品久久 | 久久国产99 | 成人免费ⅴa | 丝袜美腿av | 国产精品久久久久久久久久尿 | 亚洲视频在线观看网站 | 91视频国产高清 | 日本99热 | 手机看片中文字幕 | 在线观看福利网站 | 天天干天天综合 | 欧美激情精品久久 | 国偷自产中文字幕亚洲手机在线 | 欧美天堂视频在线 | 成年人电影免费看 | 99在线观看| 亚洲国产精品一区二区久久,亚洲午夜 | 一区二区三区日韩精品 | 日韩中文免费视频 | 亚洲涩涩网站 | 99国产精品一区 | 91福利专区 | 丁香花在线视频观看免费 | 亚洲理论在线观看电影 | 色噜噜狠狠狠狠色综合久不 | 国产91免费在线 | 激情久久久久久久久久久久久久久久 | www.亚洲黄色| 天天爽天天爽夜夜爽 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 99精品在线视频观看 | 日本久久高清视频 | 欧美a级成人淫片免费看 | 亚洲伊人av| 狠狠操影视 | 91最新中文字幕 | 国产精品网址在线观看 | 91av小视频 | 天天色天天骑天天射 | 中文字幕在线看人 | 国产成人精品一二三区 | 综合铜03| 四虎永久网站 | 国产一区二区在线播放视频 | 国产一区二区在线免费视频 | 婷婷色在线播放 | 免费精品在线视频 | 精品a级片 | 亚洲免费一级电影 | 五月天久久精品 | 国产色视频| 欧美日韩精品在线观看视频 | 成人禁用看黄a在线 | 国产亚洲无| 在线va网站 | 色综合久久久 | 国产在线理论片 | 中文字幕乱码日本亚洲一区二区 | 精品一二三四视频 | 在线免费观看国产黄色 | 91免费看黄色 | 国产香蕉97碰碰久久人人 | 黄色在线免费观看网址 | 天天天操操操 | 在线看片中文字幕 | 中文字幕av在线播放 | 日韩免费福利 | 日韩成人精品 | 激情av综合 | 日韩一区二区三区高清在线观看 | 日韩深夜在线观看 | 少妇18xxxx性xxxx片 | 激情五月五月婷婷 | 视频国产区 | 国产91探花| 国产在线国产 | 中文字幕日韩精品有码视频 | 999久久久欧美日韩黑人 | 日韩在线网 | 尤物97国产精品久久精品国产 | 成人av免费在线 | 中午字幕在线观看 | 精品国产精品久久一区免费式 | 在线免费视频 你懂得 | 国产精品久久久久一区二区国产 | 亚洲资源网 | 日本久久电影网 | 成年人视频在线 | 国产一级免费视频 | 九九在线视频免费观看 | 亚洲综合成人专区片 | 国产真实精品久久二三区 | 亚洲爱视频 | 成人在线免费视频 | 91片在线观看 | 伊人资源视频在线 | 国产久视频 | 亚洲精品动漫成人3d无尽在线 | 日本久久高清视频 | 成人av中文字幕在线观看 | 91九色pron| 国产一区二区久久 | 精品在线播放视频 | 99精品视频免费观看 | 久久蜜臀一区二区三区av | 久久理论电影 | 在线观看韩国av | 免费看黄的 | 91色综合| 九色琪琪久久综合网天天 | 免费精品人在线二线三线 | 中文字幕成人在线 | 毛片区 | 国产在线观看 | 天天操夜夜操天天射 | 麻豆免费视频网站 | 在线午夜 | 欧美激情视频在线观看免费 | 99热官网 | 69久久久| zzijzzij日本成熟少妇 | 97视频成人| 97精品在线 | 国产精品自产拍在线观看 | 成人h动漫在线看 | 久久久久久久久久电影 | japanese黑人亚洲人4k | 亚洲狠狠操 | 成人久久视频 | 国内免费久久久久久久久久久 | 97视频在线免费 | 亚洲精品久久久蜜桃 | 国产系列在线观看 | av在线之家电影网站 | 综合精品久久 | www.97视频| 亚洲三级网 | 精品国产乱子伦一区二区 | 国产精品乱码一区二区视频 | 国色天香永久免费 | av超碰免费在线 | 波多野结衣理论片 | 日韩在线观看网站 | 欧美 亚洲 另类 激情 另类 | 日韩欧美在线第一页 | 欧美在线aa | 日韩色一区二区三区 | 中文字幕在线看视频国产 | 日韩精品在线视频 | 五月婷婷在线播放 | 麻豆国产精品永久免费视频 | 中文字幕日韩高清 | 国产成人a亚洲精品v | 91久久电影| 中文字幕在线观看一区二区 | 香蕉免费在线 | 日韩欧美视频一区二区三区 | 日韩成人黄色 | 国产不卡在线观看 | 在线免费中文字幕 | 91精品国产综合久久久久久久 | 欧美日韩视频在线观看一区二区 | 中文字幕国语官网在线视频 | 国产亚洲精品久久网站 | 在线国产一区二区三区 | 欧美精品在线一区 | 五月婷婷丁香在线观看 | 9在线观看免费高清完整 | 日本精品视频在线观看 | 在线成人中文字幕 | 久久爱影视i | 国产精品区一区 | 成人资源站 | 中文字幕电影高清在线观看 | 国产呻吟在线 | 亚洲精品视频在线播放 | 欧美最爽乱淫视频播放 | 国产一卡二卡在线 | 992tv成人免费看片 | 国产三级午夜理伦三级 | 国产成人亚洲精品自产在线 | 人人草在线视频 | av电影亚洲 | 国产精品大全 | 日日夜夜骑 | 精品在线一区二区三区 | 国产精品久久人 | 国内综合精品午夜久久资源 | 久久精品—区二区三区 | 人人干天天射 | 国产福利不卡视频 | 日韩免费视频在线观看 | 亚洲成人999 | 国产a视频免费观看 | 免费看国产一级片 | 在线看的av网站 | www.久久久.cum | 欧美激情视频在线观看免费 | 激情综合亚洲 | 亚洲欧洲精品在线 | 天天干天天干天天 | 日本中文字幕系列 | 五月天激情综合 | 欧美精品免费在线观看 | 91中文在线观看 | 91传媒激情理伦片 | 在线黄av | 色婷五月| 午夜影视一区 | 天天综合视频在线观看 | 91原创在线观看 | 91黄色在线视频 | 亚洲精品字幕在线 | 欧美久久久久久久久久久久 | 米奇影视7777 | 国产精品都在这里 | 国产亚洲无 | 欧美成人xxxxxxxx | 九九热只有精品 | 黄色福利网站 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 日韩毛片在线一区二区毛片 | 粉嫩av一区二区三区四区 | 欧美日韩不卡在线视频 | 欧美欧美 | 99热官网| 最近能播放的中文字幕 | 亚洲综合色视频 | 激情婷婷色 | 久久久影院一区二区三区 | 狠狠夜夜 | 久久久亚洲网站 | 亚洲午夜激情网 | 国产九九九九九 | 高清av免费看 | 国产真实精品久久二三区 | 久久精品五月 | 成人资源网 | 久久香蕉电影 | 激情在线网站 | 亚洲毛片久久 | 亚洲免费av在线播放 | 久久综合天天 | 国产999久久久 | 亚洲国产资源 | 久久看视频 | 久久av影院| www.操.com| 91c网站色版视频 | 午夜av电影院 | 免费观看mv大片高清 | 黄色免费观看视频 | 久久综合免费视频 | 麻豆视频免费在线观看 | 一级淫片a | 亚洲人成影院在线 | 正在播放 国产精品 | 久久久久国产成人精品亚洲午夜 | 玖玖在线观看视频 | 在线播放一区 | 91经典在线 | 粉嫩av一区二区三区四区五区 | 国内精品中文字幕 | 亚洲va在线va天堂 | 美女一级毛片视频 | 天天干天天拍 | 久久久久亚洲精品 | 在线亚洲人成电影网站色www | 亚洲精品99久久久久中文字幕 | 91高清完整版在线观看 | 国产91九色蝌蚪 | 亚洲日日射 | 91在线你懂的 | 亚洲精品999 | 中文字幕国语官网在线视频 | 五月天中文字幕mv在线 | 亚洲国产精品va在线看黑人动漫 | 亚洲无人区小视频 | 天堂网一区二区三区 | 国产一级大片在线观看 | 91在线免费观看网站 | 欧美-第1页-屁屁影院 | 亚洲精品视频www | 少妇bbbb搡bbbb桶 | 青青河边草免费视频 | 久久精品999 | 久久国产色| 久久婷婷精品视频 | 在线观看国产麻豆 | 91精品视屏| 波多野结衣在线视频免费观看 | 成人久久18免费网站图片 | 成年一级片 | 日本精品一 | 亚洲一区二区天堂 | 中文字幕在线看视频国产中文版 | 欧美日韩xxxxx | 九热精品| 色综合久久88色综合天天 | 国产精品一区二区三区在线免费观看 | 狠狠的日日 | 欧美色一色 | 婷婷去俺也去六月色 | 激情久久久 | 人人干人人模 | 国产 成人 久久 | 久99久在线视频 | 成人播放器 | 天堂av网站| 亚洲黄色小说网 | 欧美日韩亚洲在线观看 | 日韩精品高清视频 | 91一区二区三区久久久久国产乱 | 成人免费看黄 | 国产黄色网 | 91精品在线视频观看 | 夜夜看av | 国产 日韩 欧美 在线 | 激情亚洲综合在线 | 国际精品久久久 | 手机av资源 | 天天操夜夜做 | 久久只精品99品免费久23小说 | 精品一二三区视频 | 操操综合网 | 国产伦精品一区二区三区… | 国产成人久久av977小说 | 69精品 | 成人毛片在线观看 | 亚洲黄色在线免费观看 | 日韩在线中文字幕视频 | 91九色porn在线资源 | 亚洲精品国精品久久99热一 | 成年人免费在线观看网站 | av在线8 | 日韩av区| 97色婷婷 | 国产黄影院色大全免费 | 久久一级片 | 日本激情中文字幕 | 91桃色在线观看视频 | 国产一区视频导航 | 日韩视频中文字幕在线观看 | 在线免费观看视频你懂的 | 天天色.com | 欧美日韩一区三区 | 日韩毛片在线播放 | 国产精品女同一区二区三区久久夜 | 久久九九免费视频 | 激情综合网五月 | 日韩电影一区二区三区在线观看 | 五月天亚洲激情 | 99久久视频 | 欧美成人在线免费观看 | 国产成人三级三级三级97 | 久久久久久久久久毛片 | 美女视频久久黄 | 亚洲视频在线看 | 视频一区二区国产 | 美女露久久 | а天堂中文最新一区二区三区 | 国产成人精品亚洲 | 国产免费高清 | 久久久久黄 | 操操操com | 日韩av不卡在线 | 人人爱在线视频 | 丁香六月在线观看 | 婷婷激情5月天 | 日韩精品一区二区三区高清免费 | 日韩免费二区 | 亚洲精品自在在线观看 | 精品久久久久久久久久岛国gif | 国产盗摄精品一区二区 | 这里只有精品视频在线 | 日日碰狠狠添天天爽超碰97久久 | 久久高视频 | 黄色福利网 | 日本视频久久久 | 国产一级不卡视频 | 国产又粗又猛又色又黄视频 | 日本天天操| 免费av在线网 | 久久久国产精品成人免费 | 久久久久中文 | 一区二区精品在线视频 | 丁香六月五月婷婷 | 日本xxxx裸体xxxx17 | 天天综合成人 | 国产这里只有精品 | 日本在线观看一区二区三区 | 韩国一区二区av | 日本精品一区二区 | 97av在线 | 日本美女xx | 色天堂在线视频 | 国产又粗又长又硬免费视频 | 人人超碰97| 久草在线 | 欧美成人h版| 亚洲va欧洲va国产va不卡 | 99re中文字幕| 丁香六月久久综合狠狠色 | 日韩国产精品久久 | 久久综合综合久久综合 | 久久精品亚洲国产 | 免费观看成人 | 国产99久久久国产精品免费看 | 国产成人精品亚洲 | 亚洲午夜久久久久久久久电影网 | 91在线在线观看 | 欧美一级视频在线观看 | 日韩欧美在线高清 | 久草视频99 | 国产一区视频在线 | 波多野结衣久久精品 | www亚洲一区 | 国产欧美久久久精品影院 | 欧美一区二区三区不卡 | www.精选视频.com | 天天曰 | 久久免费资源 | 激情欧美丁香 | 日韩av片无码一区二区不卡电影 | 国产成人99久久亚洲综合精品 | 日韩美在线 | 久草精品网 | 欧美黑人性猛交 | 久久伦理电影网 | 日韩网站免费观看 | 黄色电影在线免费观看 | 色偷偷88888欧美精品久久 | 夜色资源站国产www在线视频 | 天天插天天 | 玖玖视频免费在线 | 国产在线精品国自产拍影院 | 久久你懂的 | 2023亚洲精品国偷拍自产在线 | av福利资源 | 国产精品久久久久久久电影 | 国产精品一区二区久久精品 | 欧美日韩视频观看 | 亚洲精品在线观看av | 狠狠操操网 | 狠狠搞,com | 九色自拍视频 | 搡bbbb搡bbb视频 | 日韩1级片 | 久久综合九色综合97婷婷女人 | 亚洲三级视频 | 国产精品成人自产拍在线观看 | 国产精品久一 | 91系列在线观看 | 日本中文字幕在线观看 | 亚洲午夜av电影 | 欧美成人h版 | 午夜精品一二区 | 亚洲美女在线一区 | 久久久久久福利 | 精品免费一区 | 久久久久久久久久免费视频 | 色av资源网 | 婷婷丁香七月 | 欧美日韩国产精品一区二区亚洲 | 东方av在 | 亚洲精品视频大全 | 色婷婷综合久色 | 精品福利视频在线观看 | 日韩一区二区三免费高清在线观看 | 福利一区二区 | 在线国产能看的 | av片免费播放 | 超碰在线资源 | 97电影手机版 | 视频在线观看国产 | 欧美在线视频一区二区 | 高清在线观看av | 黄色毛片在线观看 | 久草视频在线免费 | 国产日韩av在线 | 免费看污污视频的网站 | 天天干.com | 射射色| 超碰人在线 | 在线看国产 | 久久精品伊人 | 色婷婷狠狠操 | 婷婷成人亚洲综合国产xv88 | 日韩av高清在线观看 | 国产精品9999久久久久仙踪林 | 免费福利在线观看 | 欧美视频日韩视频 | 国产精品初高中精品久久 | 免费久久网站 | 久草在线视频在线 | 欧美在线视频免费 | 玖玖999 | 免费在线观看视频a | 人人揉人人揉人人揉人人揉97 | 久久精品久久精品久久精品 | 欧美日韩在线精品 | 国产精品一区免费看8c0m | 亚洲狠狠丁香婷婷综合久久久 | 免费看三级黄色片 | 在线观看亚洲a | 视频国产在线观看18 | 三三级黄色片之日韩 | 手机成人免费视频 | 综合久久五月天 | 久久不射电影院 | 成人av在线直播 | 99久久www免费 | 精品久久一二三区 | 五月天激情电影 | 狠狠狠色丁香婷婷综合久久五月 | 天天干天天干天天干 | 免费观看成人av | 五月综合| 美女国产在线 | 色婷婷六月天 | 欧美电影黄色 | 久久好看 | 久久超碰在线 | www.黄色在线 | 久爱综合 | 九九久久久久久久久激情 | 91亚洲激情 | 伊人亚洲综合 | 精品美女在线视频 | 狠狠色综合网站久久久久久久 | 亚洲一级国产 | 综合久久久久久 | 免费看日韩| 国产剧情久久 | 久久精品男人的天堂 | 国产成人精品久久久 | 久久免费片 | 中文字幕在线观看免费观看 | 久久精品欧美一区二区三区麻豆 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 欧美一级片免费播放 | 国产一线二线三线在线观看 | 成年人在线观看网站 | 免费看一及片 | 视频在线观看亚洲 | 国产一级高清 | 91亚色免费视频 | 国产一区在线看 | av黄色在线播放 | 九九免费在线观看视频 | 视频一区二区精品 | 在线免费黄 | 国产成人亚洲精品自产在线 | 在线91观看 | 国产精品自产拍 | 久久艹艹| 日韩理论 | 99久久er热在这里只有精品66 | 一级黄色片在线免费看 | 亚洲精品视频在线观看免费视频 | 亚洲aaa毛片 | 国产精品欧美久久久久无广告 | 色先锋av资源中文字幕 | 国产成人一区二区三区在线观看 | 久久999精品 | 韩国在线一区二区 | 日本黄色片一区二区 | 免费黄av | 国产 成人 久久 | 免费精品在线 | 欧美综合在线观看 | 黄色大片免费播放 | 最新中文字幕在线观看视频 | 日韩中文字幕视频在线观看 | 国产在线视频在线观看 | 人人草人人做 | 1000部国产精品成人观看 | 色婷丁香 | av大全在线播放 | 99爱在线观看 | 中文字幕免费看 | 97超碰网| 亚洲精品在线观看网站 | 久久99精品热在线观看 | 国产视频精品在线 | www五月天婷婷 | 国产精品每日更新 | 天天色图 | www·22com天天操| 亚洲经典中文字幕 | 久久人人爽人人爽人人片av软件 | 中文字幕a∨在线乱码免费看 | 99久久精品国产网站 | 亚洲 欧洲av | 日韩高清免费在线 | 人人干人人上 | av电影免费 | 九九视频网| 日韩深夜在线观看 | 欧美精品亚洲精品日韩精品 | 成人一级视频在线观看 | 激情五月视频 | 国产亚洲精品福利 | av免费观看网址 | 国产淫片免费看 | 国产片免费在线观看视频 | 中文av网 | 91视频麻豆 | 玖玖在线免费视频 | 久久精品视频网址 | 国产精品福利小视频 | 国产精品成人一区二区三区吃奶 | 91av免费在线观看 | 99久久精品国产亚洲 | 日韩精品视频在线观看免费 | 波多野结衣在线视频一区 | 免费在线a | 在线观看第一页 | 国产91影视| 国产成人精品福利 | 亚洲精品自在在线观看 | 色综合久久综合中文综合网 | 国产精品热| 黄色在线观看污 | 日韩av影视在线 | 91激情视频在线播放 | 狠狠操狠狠| 91在线影院 | 免费日韩视频 | 国产无遮挡猛进猛出免费软件 | 在线观看国产福利片 | 国产黄色美女 | 在线欧美国产 | 超碰人人国产 | 国产91电影在线观看 | 日b黄色片| 亚洲成人精品影院 | 综合激情网... | 激情大尺度视频 | av黄色成人 | 久久视频这里有久久精品视频11 | 中文字幕日韩在线播放 | 麻花传媒mv免费观看 | 国产成人在线观看免费 | 高清久久久久久 | www日韩视频 | 日韩午夜网站 | 日韩精品欧美精品 | 国产激情电影综合在线看 | 色午夜| 国产美女视频网站 | 亚洲最快最全在线视频 | 日韩午夜小视频 | 91在线播 | 夜夜操天天干 | 国产一区精品在线观看 | 日韩精品久久久久久中文字幕8 | 午夜天天操| 国产96在线视频 | 国产九九热 | 国产97在线视频 | 国内精品免费 | 91传媒在线看 | 午夜a区 | 中文字幕在线观看91 | 草久在线视频 | 制服丝袜在线 | 亚洲撸撸 | 国产精品久久久久久久久久久久午夜 | 国产色在线 | 午夜成人免费影院 | 在线 你懂| 免费网站看v片在线a | 亚洲天堂视频在线 | 色综合人人 | 国产一区二区视频在线 | 色婷婷综合视频在线观看 | 国产精品人成电影在线观看 | 91麻豆精品国产91久久久无需广告 | 国产精品久久久av久久久 | 欧美在线观看禁18 | 五月天激情视频 | 色偷偷888欧美精品久久久 | 午夜av电影 | 国产亚洲欧美精品久久久久久 | 日韩在线色视频 | 日韩簧片在线观看 | 九九热只有精品 | www.97色.com| 在线观看黄色大片 | 成片免费观看视频 | 国产中文字幕在线免费观看 | 亚洲精品色婷婷 | 国产日韩欧美视频在线观看 | 久久婷亚洲五月一区天天躁 | 日日综合网 | 免费看日韩 | 午夜精品三区 | 免费看wwwwwwwwwww的视频 久久久久久99精品 91中文字幕视频 | 美女免费视频网站 | 国产精品自产拍 | 日韩欧美精品免费 | 最近中文字幕久久 | 精品视频久久久久久 | 999久久久免费精品国产 | 久久国产精品99久久久久久进口 | 日韩欧美在线一区 | 亚洲国产精品成人精品 | 久久一区二区三区超碰国产精品 | 久久99久久99免费视频 | 最近更新中文字幕 | 久久精品国产亚洲精品 | 91久久奴性调教 | 亚洲黄色软件 | 在线观看麻豆av | 中文字幕av日韩 | 91精品啪在线观看国产81旧版 | 日韩精品影视 | 欧美日韩免费观看一区二区三区 | 久草在线欧美 | 青青河边草免费 | 一区 二区电影免费在线观看 | 日韩精品亚洲专区在线观看 | 日韩有码第一页 | 日韩在线高清视频 | 日本中出在线观看 | 欧美一区二区在线看 | 久久夜视频 | 成人黄性视频 | 日韩免费福利 | 色伊人网 | 国产一区二区播放 | 日韩91在线 | 黄色中文字幕在线 | 激情久久久久久久久久久久久久久久 | 在线观看免费色 | 久久国产精品久久精品 | 久99久在线视频 | 久草在线免费资源 | 久久婷婷影视 | www.夜夜爽| 日韩欧美一区二区在线观看 | 日韩欧美国产激情在线播放 | 国产亚洲成av片在线观看 | 国产黄a三级三级三级三级三级 | 婷婷六月天综合 | 久久综合狠狠狠色97 | 香蕉视频在线网站 | 西西www4444大胆视频 | 国产精品久久久久久久久大全 | 国产精品va在线播放 | 丁香免费视频 | 国产亚洲亚洲 | 午夜久久网站 | 中文字幕视频在线播放 | 99这里只有久久精品视频 | 色婷婷狠 | 色综合人人 | 欧美影片 | 操操操综合 | 婷婷久久五月天 | 日韩电影在线观看中文字幕 | 91av欧美 | av天天在线观看 | 99精品在线观看视频 | 美女露久久 | 91九色丨porny丨丰满6 | 日韩精品一区二区三区在线视频 | 日本精品小视频 | 欧美黑人巨大xxxxx | 成人亚洲精品国产www | 99久久精品一区二区成人 | 97av在线视频免费播放 | 不卡在线一区 | 亚洲欧美乱综合图片区小说区 | 午夜黄色大片 | 在线电影a | www亚洲精品| 免费性网站 | 97视频免费观看 | 韩国三级一区 | 欧美精品一二 | 中文字幕在线高清 | 日韩精品在线播放 | 亚洲电影网站 | 中文字幕中文字幕中文字幕 | av在线进入| 国产亚洲免费观看 | 久久精品2 | 国产婷婷vvvv激情久 | 欧美日韩大片在线观看 | 国产精品专区一 | 欧美日本国产在线观看 | 国产精品久久久久久欧美 | 国产成人精品一区二区在线观看 | 国产一区欧美日韩 | 久久草精品| 丁香婷婷综合色啪 | 亚洲电影成人 | 国产人成精品一区二区三 | 久草久草久草久草 | 黄色片视频免费 | 99久久久久久久久 | 日韩欧美国产免费播放 | 国产 日韩 欧美 自拍 | 国内精品一区二区 | 久草在线观看视频免费 | 久免费视频 | 欧美一级黄色片 | 日韩中文字幕免费看 | 91亚洲精品久久久 | 99久久毛片 | 中文字幕免费久久 | 国产一区在线免费 | 一区二区三区日韩在线观看 | 久草视频看看 | 国产精品亚洲片夜色在线 | 亚洲无吗天堂 | 色综合久久五月 | 伊人在线视频 | 国产美女在线精品免费观看 | 在线观看国产麻豆 | 欧美日韩久久久 | 亚洲天堂首页 | 91日韩在线视频 | 美女中文字幕 | 91系列在线观看 | 免费看片网址 | 狠狠操天天操 | 久久久久黄 | 日韩午夜精品福利 | 国产精品第10页 | 亚洲午夜久久久久久久久电影网 | 人人揉人人揉人人揉人人揉97 | 亚洲女欲精品久久久久久久18 | 一区二区在线不卡 | 午夜精品一区二区三区在线视频 | 久热只有精品 | 中文av在线免费观看 | 午夜精品久久久久久久久久 | 香蕉视频网站在线观看 | 日日操日日插 |