js學習筆記 String中的模式匹配

2021-07-26 03:05:32 字數 1936 閱讀 3038

string型別定義了幾個用於在字串中匹配模式的方法。

在字串上呼叫這個方法,本質上與呼叫regexp的exec()方法相同。

match()方法之接收乙個引數:正規表示式或乙個regexp物件。

var text = "cat, bat, sat, fat";

var pattern = /.at/;

//與pattern.exec(text)相同

var matches = text.match(pattern);

matches.index; //0

matches[0]; //"cat"

patern.lastindex;//0

match( )方法返回乙個陣列,與呼叫pattern的exec方法返回的陣列相同:第一項是與整個模式相匹配的字串,之後的每一項儲存著與正規表示式中的捕獲組相匹配的字串。

接受乙個引數,與match方法相同:正規表示式或regexp物件。

此方法返回字串中第乙個匹配項的索引;如果沒有找到匹配項則返回-1。

而且search方法始終是從字串開頭向後查詢模式。

var text = "cat, bat, sat, fat";

var pos = text.search(/at/);

alert(pos); //1

為了簡化替換子字串的操作,ecmascript提供了replace方法。

此方法接收兩個引數:

如果第乙個引數是字串那麼只會替換第乙個子字串,要想替換所有子字串,唯一的辦法就是提供乙個正規表示式,而且要指定全域性標誌g。

var text = "cat, bat, sat, fat";

var result = text.replace("at","ond");

alert(result); //

"cond, bat, sat, fat"

result = text.replace(/at/g,"ond");

alert(result); //

"cond, bond, sond, fond"

replace方法的第二個引數也可以是乙個函式。

在只有乙個匹配項的情況下,會向這個函式傳遞3個引數:

在正規表示式中定義了多個捕獲組的情況下,傳遞給函式的引數依次是模式的匹配項、第乙個捕獲組的匹配項、第二個捕獲組的匹配項……但最後的兩個引數仍然分別是模式的匹配項在字串中的位置和原始字串。

這個函式應返回乙個字串,表示應該被替換的匹配項。

使用函式作為replace()方法的第二個引數可以實現更加精細的替換操作。

function

htmlescape

(text)

});}alert(htmlescape("

"))//"

"

這個例子定義了乙個對html進行轉義的函式,正規表示式能夠匹配4個字元,針對每個匹配的字元返回特定的html實體。

這個方法可以基於指定的分隔符將乙個字串分割成多個子字串,並將結果放在乙個陣列中。

分隔符可以是字串,也可以是乙個regexp物件。

split()方法可以接受可選的第二個引數,用於指定陣列的大小,以便確保返回的陣列不會超過既定大小。

var coloetext = "red,blue,green,yellow";

var colors1 = colortext.split(",")

//["red","blue","green","yellow"]

var colors2 = colortext.split(",",2);

//["red","blue"]

var colors3 = colortext.split(/[^\,]+/);

js中的String物件

string物件的相關函式 replace str1,str2 將字串的str1換成str2 split 將字串轉換成陣列 length 計算字串的長度 indexof str1,n 計算字串中第n次出現str1的位置 lastindexof 從右向左數查詢字串的位子 match str 字串匹配,...

js中的String方法

charat 返回指定位置的字元 charcodeat 返回指定位置字元的unicode碼點 concat 返回鏈結兩個字串的字元 slice 返回從指定位置開始的指定長度的字元,負數表示從尾部開始數,乙個引數表示開始位置,預設到結束位置 substring 作用同slice 不建議使用 subst...

js中string的常見操作

建立乙個string 物件,語法 new string stringvalue 這個呼叫會將引數轉換為字串,並作為乙個string 物件。事實上任何乙個字串常量都是乙個 tring物件,可以將其直接作為物件來使用,這和使用new string 建立物件的區別是 typeof的返回值不同,乙個是 st...