在使用正則匹配之前,我們需要了解正則的方法或支援正則的方法。
支援正規表示式的string物件的方法
1.search 檢索與正規表示式相匹配的值
2.match 找到乙個或多個正規表示式的匹配
3.replace 替換與正規表示式匹配的子串
4.split 把字串分割為字串陣列
之前一直以為replace是regexp物件的方法,其實是字串的方法,只是這些方法可以接受regexp作為引數進行匹配操作。
regexp物件方法有
1.compile (已廢棄)
2.exec 檢索字串中指定的值。返回找到的值,並確定其位置
3.test 檢索字串中指定的值。返回 true 或 false
4.tostring 返回正規表示式的字串。
可以接受乙個字串或rexexp物件作為引數,並匹配,匹配到則返回第乙個在字串中找到的位置,否則返回-1,不傳引數則返回0
let reg = /\d/g;
let str = 'uio1'
str.search(reg); //3
str.search("i"); //1
match() 方法可在字串內檢索指定的值,或找到乙個或多個正規表示式的匹配,將匹配到的字元以陣列的形式輸出出來。
let reg = /\d/g;
let str = 'the rain in spain stays mainly in the plain';
str.match(reg)
//輸出 ["t", "h", "e", " ", "r", "a", "i", "n", " ", "i", "n", " ", "s", "p", "a", "i", "n", " ", "s", "t", "a", "y", "s", " ", "m", "a", "i", "n", "l", "y", " ", "i", "n", " ", "t", "h", "e", " ", "p", "l", "a", "i", "n"]
str.match(/ain/g) //輸出 ["ain", "ain", "ain"];
這是比較常用的乙個方法,用於在字串中用一些字元替換另一些字元,或替換乙個與正規表示式匹配的子串。常用於屬於框的限制(如只能輸入數字,只能輸入漢字等);
replace(searchvalue,newvalue)
接受兩個引數
searchvalue: 必須,規定子字串或要替換的模式的 regexp 物件。
請注意,如果該值是乙個字串,則將它作為要檢索的直接量文字模式,而不是首先被轉換為 regexp 物件
newvalue:必需。乙個字串值。規定了替換文字或生成替換文字的函式。
也就是searchvalue是查詢到到值,newvalue是替換到值
let reg = /\d/g;
let str = 'f1432fg';
str.replace(reg, ''); //ffg,將查詢到的數字替換為空
str.replace(reg, 'g'); //fggggfg, 將查詢到到數字替換為g
let reg1= /\d/g;
str.replace(reg1, ''); 將所有非數字字元替換為空,也就是只能輸入數字。
用於把乙個字串分割成字串陣列
string.split(separator,limit)
separator:可選。字串或正規表示式,從該引數指定的地方分割 string object。
limit: 可選。該引數可指定返回的陣列的最大長度。如果設定了該引數,
返回的子串不會多於這個引數指定的陣列。如果沒有設定該引數,整個字串都會被分割,
不考慮它的長度。
let str = 'how are you doing today?'
str.split(' ') //以空格劃分 ["how", "are", "you", "doing", "today?"]
str.split() //字串轉換為陣列 ["how are you doing today?"]
str.split('')
//每乙個字元轉換為陣列項 ["h", "o", "w", " ", "a", "r", "e", " ", "y", "o", "u", " ", "d", "o", "i", "n", "g", " ", "t", "o", "d", "a", "y", "?"]
//傳入正則
let reg = /\d/g;
let str1 = 'oiu1fou4f'
str1.split(reg) //以數字劃分 ["oiu", "fou", "f"]
用於檢索字串中的正規表示式的匹配。
如果字串中有匹配的值返回該匹配值,否則返回 null
let str = 'hello world! hello'
let reg = /hello/g
reg.exec(str) //["hello", index: 0, input: "hello world! hello", groups: undefined]
reg = /hello/g
reg.exec(str) //null
用於檢測乙個字串是否匹配某個模式.
如果字串中有匹配的值返回 true ,否則返回 false。
常用於檢測輸入格式是否正確。例如檢測是否是郵箱,是否是手機號碼
let str = 'hello world';
let reg = /\d/g
reg.test(str) //false
reg = /\d/g
reg.test(str) //true
let reg = /\d/g;
reg.tostring() // 輸出 /\d/g;
更多詳細請參考:
手機號碼驗證:1.手機號碼必須是11位數字,2.必須是以1開頭,3.第二位數不能是0、1或2。
所以可以像下面這樣寫
let reg = /^1[3456789]\d$/
^1 表示一數字1開頭
[3456789] 表示第二位數必須是3-9中的乙個
\d 表示第二位數後面緊跟著9位數字
n$ 表示以n結束。這裡的n是數字。
nginx環境的搭建 支援正則
一 安裝 安裝nginx 發音為 engine x 是由俄羅斯人 igor sysoev 建立的專案,基於 bsd許可。據說他當初是 f5的成員之一,英文主頁 俄羅斯的一些大 已經使用它超過兩年多了,一直表現不凡。安裝nginx 之前需要安裝 pcre 包和zlib 以支援重寫 正則以及網頁壓縮等等...
flask框架(六) 實現支援正則的路由
一 預設路由 user post post post login methods get post 常用路由系統有以上五種,所有的路由系統都是基於一下對應關係來處理 default converters 二 寫轉換器類,支援正則路由 class regexconverter baseconverte...
支援正規表示式的String物件的方法
search 方法 該方法用於檢索字串中指定的子字串,或檢索與正規表示式相匹配的字串。語法 stringobject.search regexp 注意 search 方法不執行全域性匹配,它將忽略標誌g,同時它也沒有regexp物件的lastindex的屬性,且總是從字串開始位置進行查詢,總是返回的...