accp6.0 《使用javascript增強交互效果》學習筆記ch7 正則表達式和表單輔助特效

regular 正則

express 表達式

global全局

表單驗證技術之一:正則表達式

7.1:什麼是正則表達式:

正則表達式是一個描述字符模型的對象,它是由一些特殊的符號組成的,這些符號和SQL Server中學過的通配符一樣,其組成的字符模式用來匹配各種表達式,

1.定義正則表達式

定義正則表達式有兩種構造形式,1:普通方式,2:構造函數

1)普通方式 

var reg=/表達式/附加參數

表達式:一個字符串代表了某種規則,其中可以使用某些特殊字符來代表特殊的規則

附加參數:用來擴展表達式的含義,主要有以下三個參數

g:代表可以進行全局匹配

i:代表不區分大小寫匹配

m:代表可以進行多行匹配

上面三個參數可以任意組合,代表複合含義,當然也可以不加參數,例如:

var reg=/white/;

var reg=/white/g;

2)構造函數

var reg=new RegExp("表達式",“附加參數”);

其中表達式與附加參數的含義與上面普通方式中的定義的含義相同,例如:

var reg =new RegExp("white");

var reg =new RegExp("white","g");

2.表達式的模式

從規範上講:表達式的模式分爲簡單模式和複合模式

1)簡單模式

簡單模式是指通過普通字符的組合來表達的模式,例如:

var reg=/china/;

var reg=/abc8/;

可見簡單模式只能表示具體的匹配,如果匹配一個郵箱或一個電話號碼,就不能使用具體的匹配,這時就用到了複合模式

2)複合模式

複合模式是指含有通配符來表達的模式,這裏的通配符雨SQL Server 中的通配符相似,例如:

var reg =/^\w+$/;

其中+、\w、^和$都是通配符,代表着特殊的含義,因此複合模式可以表達更爲抽象化的規則模式。


RegExp對象

方法 

exec 檢索字符中是正則表達式的匹配,返回找到的值,並確定其位置

test 檢索字符中指定的值,返回true或false


test()方法用於檢測一個字符串是否匹配某個模式

正則表達式對象實例.test(字符串);

如果字符串中含有與正則表達式匹配的文本,則返回true,否則返回false,例如:

var str="my cat";

var reg=/cat/;

var result=reg.test(str);

result的值爲true;


Javascript除了支持RegExp對象的正則表達式方法外,還支持String對象的正則表達式方法,String對象定義了使用正則表達式來執行強大的模式匹配和文本檢索與替換函數的方法。

String 對象的方法

方法:

match 找到一個或多個正則表達式的匹配

search 檢索與正則表達式相匹配的值

replace 替換與正則表達式匹配的字符串

split 把字符串分割爲字符串數組

match()方法可以在字符串內檢索指定的值,找到一個或多個正則表達式的匹配,該方法類似於indexOf(),但是indexOf()返回字符串的位置,而不是指定的值

match()語法:

字符串對象.match(searchString或regexpObject)

searchString是要檢索的字符串值,regexpObject是規定要匹配模式的RegExp對象。例如:

var str="my cat";

var reg=/cat/;

var result=str.match(reg);

result的值爲cat;


replace()方法。
replace()方法用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的字符串
語法:
字符串對象.replace(RegExp對象或字符串,"替換的字符串")

如果設置了全文搜索則符合條件的RegExp或字符串都將被替換,否則只替換第一個,返回替換後的字符串,例如:
var str="My little white cat,is really a  very lively cat";
var result =str.replace(/cat/,"dog");
var results=str.replace(/cat/g,"dog");
result的值爲My little white dog,is really a very lively cat.
results的值爲My little white dog,is really a very lively dog.


split()方法

split()方法將字符串分割成一系列子串並通過一個數組將這一系列子串返回,語法爲:

字符串對象.split(分隔符,n);

分隔符可以是字符串,也可以是正則表達式,n爲限制輸出數組的個數,爲可選項,如果不設置n,則返回包含整個字符串的元素數組,例如:

var str="red,blue,green,white";

var result =str.split(",");

var string="";
for(var i=0;i<result.length;i++){

string+=result[i]+"\n";

}
alert(string);

RegExp對象的屬性                  描述

global                     RegExp對象是否具有標誌g

ignoreCase           RegExp對象是否具有標誌i

multiline                 RegExp對象是否具有標誌m


global

global屬性用於返回正則表達式是否具有標誌g,它聲明瞭給定的正則表達式是否執行全局匹配,如果g標誌被設置,則該屬性爲true,否則false


ignoreCase

ignoreCase屬性用於返回正則表達式是否具有標誌i,它聲明瞭給定的正則表達式是否執行或略大小寫的匹配,如果i標誌被設置,則該屬性爲true,否則false


multiline

multiline屬性用於返回正則表達式是否具有標誌m,它聲明瞭給定的正則表達式是否以多行模式執行模式匹配,如果m標誌被設置,則該屬性爲true,否則false


電子郵箱的正則表達式"reg=/^\w+@\w+.[a-zA-Z]{2,3}(.[a-zA-Z]{2,3})?$/"


正則表達式的常用符號:

/.../             代表一個模式的開始和結束

^                 匹配字符串的開始

$                 匹配字符串的結束

\s                任何空白字符

\S                任何非空白字符

\d                 匹配一個數字字符,等價於[0-9]

\D                 除了數字之外的任何字符,等價於[^0-9]

\w                 匹配一個數字、下劃線或字母字符,等價於[A-Za-z0-9]


正則表達式的重複字符
{n}                 匹配前一項n次
{n,}                匹配前一項n次,或者多次
{n,m}            匹配前一項至少n次,但是不能超過m次
*                    匹配前一項0次或多次,等價於{0,}
+                   匹配前一項1此或多次,等價於{1,}
?                   匹配前一項0次或一次,也就是說前一項是可選的,等價於{0,1}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章