正規表示式 split()

admin發表於2018-09-07

split方法可以用指定字串分隔源字串,並生成一個陣列。

此方法之所以強大,是因為它的引數不但可以是普通字串,也可以是正規表示式。

引數為普通字串的應用可以參閱JavaScript split()一章節。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
str.split(Reg,howmany)

引數列表如下:

(1).regexp:必需,正規表示式,它所匹配到的字串被用來分隔字串。

(2).howmany:可選,規定生成陣列的長度。

瀏覽器支援:

(1).IE瀏覽器支援此方法。

(2).edge瀏覽器支援此方法。

(3).火狐瀏覽器支援此方法。

(4).谷歌瀏覽器支援此方法。

(5).opera瀏覽器支援此方法。

(6).safria瀏覽器支援此方法。

例項程式碼:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let str="antzone";
console.log(str.split(/n/));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/07/123030nyvg12xyozg56ftx.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

正規表示式可以匹配str字串中的字元"n"。

那麼就用字元"n"來分隔字串,並生成由一個陣列。

陣列元素由"n"分隔原字串生成的子字串組成。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let str="softwhy is good webSite";
console.log(str.split(/\s/));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/07/123108m7ez27bt8q22b45b.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

上面程式碼使用空格分隔原字串,並生成一個陣列。

關於\s可以參閱正規表示式 \s 元字元一章節。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let str="softwhy is good webSite";
console.log(str.split(/\s/,2));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/07/123200lak1gazeh04gavd4.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

預設生成的陣列長度是4,但是由於規定了第二個引數,並設定為2。

那麼陣列的長度就會受到第二個引數限制,長度為2。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let str="ant";
console.log(str.split(/\w/));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/07/123239luhpfntu7su7rh5n.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

\w可以匹配到字串中的每一個字元,字元兩端是空。

所以生成的陣列內容為空格。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let str="ant";
console.log(str.split(/(\w)/));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/07/123317jj3wcooznqh7n34b.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

如果正規表示式包含子表示式,那麼返回的陣列中包括與這些子表示式匹配的字串。

再來看一個關於帶有子表示式的例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let str="antzone";
console.log(str.split(/a(n)/));

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/07/123349g4kqywwz63aky7s7.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

原字串是由正則匹配的內容"an"分隔,如果僅考慮到此,那麼陣列有兩個元素:

(1)."an"左側的空與右側的"tzone"。

(2).但是由於子表示式(n)的存在,那會將它匹配的內容也新增進陣列,需要注意這個"n"必須在"a"後面。

相關文章