正則表達式.使用篇

本片介紹 javascript 裏的正則表達式javascript

是什麼

遇到不認識的事物時,人們第一想到的多是想知道這個東西,是什麼?可是,實際上定義一個東西很難,即便是較爲恰當的描述,也多是晦澀難懂的。本篇選擇直接略過這個問題。java

而正則表達式做爲一個「工具」,更爲直接的描述方式是,這個東西能用來幹什麼,以及怎麼使用它。正則表達式

功能

正則表達式能夠用來描述一個字符串。api

好比:工具

  • 以字母 A 開頭的字符串
  • 不包含數字的字符串
  • 包含大小寫字母、數字及特殊符號的字符串
  • 符合 email 地址規則的字符串
  • ……

顯然,正則表達式和字符串的關係非同通常。字符串上還有幾個方法,與正則表達式有關。code

String 上的方法

可能你這麼用過 String.search 方法:regexp

var str = 'aaa123aaa';
var index = str.search('123');
console.log(index); // 3

乍一看和 String.indexOf 差很少,確實這樣,若是 search 方法收到一個字符串參數( 好比 A.search(B) ),會像 indexOf 同樣,返回 B 字符串在 A 字符串第一次出現的位置。和 indexOf 方法不一樣的是,search 方法能夠接收正則表達式對象,假設有一個對象 R 表示「數字組成的字符串」,那麼就會有下面的結果:對象

var R = xxxx; // 這裏先不考慮如何建立正則表達式對象
var str = 'aaa123aaa';
var index = str.search(R);
console.log(index); // 3

相同的,search 方法也能夠用來檢索「非數字、字母」第一次出現的位置、「大寫字母第一次出現的位置」、「 'abc' 或者 'bbc' 或者 'ccc' 第一次出現的位置」 ……ip

replace

這個就是很經常使用的方法了:字符串

var str = 'aaa123aaa';
var str2 = str.replace('123',0);
console.log(str2); // aaa0aaa

那麼上例中的 str2 一樣能夠替換爲一個正則表達式對象:把字符串中的數字替換爲xxx,把非數字、字母替換爲 "" (刪除非數字字母的字符)

match

碼者前兩天正好用到了這個方法,需求是獲取本頁路徑最後一個反斜槓後面的內容。先上碼:

var path = 'http://www.xxx.com/api/user/6'; // 也就是獲取 /6
var R= xxxx; // 此處的 R 假設表示「最後一個 / 以及後面的內容
var results = path.match(R);
var result = results[0];
console.log(result); // "/6"

不難理解:match 方法匹配正則表達式描述的子字符串,並返回匹配到的結果。

RegExp 上的方法

在 javascript 裏,像有關數學方面的操做,咱們會想到 Math 對象,好比 Math.ceil, Math.floor 方法;像有關日期的操做,咱們會想到 Date 對象,好比 Date.now, Date.getTime;有一個叫 RegExp 的對象,用來封裝一些有關正則表達式方面的方法。

test

這是多是正則表達式最簡單,使用率最高的方法了吧。好比註冊帳戶的時候,咱們須要檢測一下用戶輸入的手機號是不是正確的格式。就能夠:

var R = xxxx; // 一個用來描述手機號格式的正則表達式對象
var tel = '1564xxxx330';
var result = R.test(tel);
console.log(result); // true 或者 false

能夠說,RegExp.test 就是用來檢驗一個字符串的格式

exec

這是一個和 String.match 方法很像的方法,本文重點在對正則表達式的認識,再也不贅述。

以上全部例子、方法都只大體介紹一個方法最基本的功能,其實正則表達式的功能遠比本文所說的強大不少不少,並且還有更多實用的方法。更詳細的內容請百度(不建議一開始就把全部功能記住,建議用到的時候看一下),好比搜索關鍵字 js+match

如何建立 RegExp 對象

上面的內容是介紹正則表達式有什麼做用,以及一些簡單的使用方法。而正則表達式的難點,在於如何建立本身須要的正則表達式。請關注下篇。

相關文章
相關標籤/搜索