正則表達式的() [] {}有不同的意思,() 是為了提取匹配的字符串。表達式中有幾個()就有幾個相應(yīng)的匹配字符串。
(\s*)表示連續(xù)空格的字符串。[]是定義匹配的字符范圍。
比如 [a-zA-Z0-9] 表示相應(yīng)位置的字符要匹配英文字符和數(shù)字。
[\s*]表示空格或者*號。{}一般用來表示匹配的長度,比如 \s{3} 表示匹配三個空格,\s[1,3]表示匹配一到三個空格。
(0-9) 匹配 '0-9′ 本身。 [0-9]* 匹配數(shù)字(注意后面有 *,可以為空)[0-9]+ 匹配數(shù)字(注意后面有 +,不可以為空){1-9} 寫法錯誤。
[0-9]{0,9} 表示長度為 0 到 9 的數(shù)字字符串。
例如:在PHP中過濾內(nèi)容里面有數(shù)字或空格數(shù)字
JavaScript正則表達式在線測試工具:http://tools.jb51.net/regex/javascript
1、作為分組運算符:
分組運算符應(yīng)該是再熟悉不過了,因為在小學數(shù)學中就有應(yīng)用,例如:
var a=(1+2)*4;
console.log(a);
以上代碼的輸出值是12,因為分組運算符可以改變運算符的優(yōu)先級,否則的話輸出值是9。
擴展說明:
1.很多教程說它是一個強制運算符,其實在ECMAScript中,根本就沒有強制運算符這么一個概念,它就是普通分組運算符。
2.這也是為什么eval()函數(shù)將json格式字符串轉(zhuǎn)換為對象需再嵌套一個小括號的原因,可以參閱使用eval()將json字符串轉(zhuǎn)換為對象要多加一個小括號一章節(jié)。
2、函數(shù)聲明和函數(shù)調(diào)用參數(shù)列表:
在聲明函數(shù)或者調(diào)動函數(shù)的時候,如果有參數(shù),那么就會將參數(shù)放在小括號之中,代碼如下:
function func(a,b){
//代碼
}
func(1,2);
3、與特定關(guān)鍵字形成特定語句:
小括號可以與特定的關(guān)鍵詞形成特定的語句,代碼如下:
if(a>1){
//代碼
}
while(i<len){
//代碼
}
for(var i=0;i<len;i++){
//代碼
}
4、表達式方式函數(shù)聲明和立即調(diào)用函數(shù)表達式:
創(chuàng)建一個函數(shù)除了函數(shù)聲明方式聲明之外,還可以使用表達式方式,代碼如下:
function func(){
//代碼
}
var func=function(){
//代碼
}
第二種就是表達式方式聲明一個函數(shù)。下面介紹一下函數(shù)聲明和表達式方式的區(qū)別:
函數(shù)聲明必須帶有標識符,也就是函數(shù)名,但是函數(shù)表達式方式,標識符帶不帶都可以。
function 函數(shù)名稱 (參數(shù):可選){ 函數(shù)體 }//函數(shù)聲明方式
function 函數(shù)名稱(可選)(參數(shù):可選){ 函數(shù)體 }//函數(shù)表達式方式
要區(qū)分一個代碼是函數(shù)聲明還是函數(shù)表達式,那要看代碼的應(yīng)用上下文,例如:
function func(){};//函數(shù)聲明方式
(function func(){})//函數(shù)表達式方式
出現(xiàn)在運算符相關(guān)上下文中,那么它就是一個表達式,例如下面最常見的代碼:
1
var func=function(){}
上面介紹一下什么是函數(shù)表達式,下面就看一下如何立即調(diào)用函數(shù)表達式:
(function(){})();
(function(){}());
!function(){}();
上面三個語句都是在運算符相關(guān)上下文中,所以都是表達式,就可以強制調(diào)用了,下面做一下分析:
1.(function(){})(),(function(){})是一個表達式,會強制其理解成函數(shù)直接量方式,也就是表達式方式創(chuàng)建函數(shù),(function(){})它會返回函數(shù)對象的引用,最后使用小括號()調(diào)用此函數(shù)。
2.(function(){}()),如果不用外面包裹的小括號,{}就會理解為復(fù)合語句,那么function(){}就被理解為函數(shù)聲明,但是沒有標識符,所以會報錯,使用小括號以后,就會變成表達式,也會被理解為直接量方式。
3.!function(){}(),原理同上,!也是一個運算符,所以在原理同上。
二、{ } 大括號,表示定義一個對象,大部分情況下要有成對的屬性和值,或是函數(shù)。
如:var LangShen = {"Name":"Langshen","AGE":"28"};
上面聲明了一個名為“LangShen”的對象,多個屬性或函數(shù)用,(逗號)隔開,因為是對象的屬性,
所以訪問時,應(yīng)該用.(點)來層層訪問:LangShen.Name、LangShen.AGE,當然我們也可以用數(shù)組的方式來訪問,如:LangShen["Name"]、LangShen["AGE"],結(jié)果是一樣的。
該寫法,在JSON數(shù)據(jù)結(jié)構(gòu)中經(jīng)常用,除此之外,我們平時寫函數(shù)組的時候,也經(jīng)常用到,如:
三、[ ]中括號,表示一個數(shù)組,也可以理解為一個數(shù)組對象。
如:var LangShen = [ "Name","LangShen","AGE","28" ];
很明顯,每個值或函數(shù),都是獨立的,多個值之間只用,(逗號)隔開,因為是數(shù)組對象,所以它等于:
var LangShen = Array( "Name","LangShen","AGE","28" );
訪問時,也是和數(shù)組一樣,alert( LangShen[0] );
四、{ } 和[ ] 一起使用,我們前面說到,{ } 是一個對象,[ ] 是一個數(shù)組,我們可以組成一個對象數(shù)組,如:
如:alert( LangShen.MySon[1].Name ) ;
更多建議: