正則表達式 --- 基礎篇

1.正則表達式是由一個字符序列形成的搜索模式。

//語法
/字符串匹配規則/修飾符 // 修飾符可選

xiaogaigai是主體, i是修飾符(搜索時不區分大小寫)

// 栗子🌰
let partten = /xiaogaigai/i

2. RegExp 對象

一個預定義了屬性和方法的正則表達式對象.

2.1 RegExp對象的屬性

    global:判斷是否設置了 "g" 修飾符

    ignoreCase: 判斷是否設置了 "i" 修飾符

    lastIndex:用於規定下次匹配的起始位置

    multiline:判斷是否設置了 "m" 修飾符

    source:返回正則表達式的匹配模式

以下是支持正則表達式的String對象的方法

search() :用於檢索字符串中指定的子字符串,或檢索與正則表達式相匹配的子字符串,並返回子串的起始位置。

let str = 'hello,xiaogaigai';
console.log(str.search(/xiaogaigai/i)); // 6

replace():用於在字符串中用一些字符替換另一些字符,或替換一個與正則表達式匹配的子串。

let str = 'hello,xiaogaigai';
console.log(str.replace('hello', 'hi')); // hi,xiaogaigai
console.log(str.replace(/Hello/i, 'hi')); // hi,xiaogaigai

match(): 找到一個或多個正則表達式的匹配

let str = 'hello,xiaogaigai';
str.match('a'); // ["a", index: 8, input: "hello,xiaogaigai", groups: undefined]

split(): 把字符串分割爲字符串數組

let str = 'hello,xiaogaigai';
str.split('a'); // ["hello,xi", "og", "ig", "i"]

以下是RegExp的方法

exec(): 檢索字符串中指定的值,返回找到的值 並確定其位置

let str = 'hello,xiaogaigai';
// ["hello", index: 0, input: "hello,xiaogaigai", groups: undefined]
console.log(/hello/.exec(str)); 

compile(): 編譯正則表達式 (用於在腳本執行過程中編譯正則表達式、也可用於改變和重新編譯正則表達式)(已廢棄

RegExpObject.compile(regexp,modifier) // modifier規定匹配的類型。"g" 用於全局匹配,"i" 用於區分大小寫,"gi" 用於全局區分大小寫的匹配

test(): 檢測一個字符串是否匹配某個模式,如果字符串中含有匹配的文本,則返回 true,否則返回 false

let str = 'hello,xiaogaigai';
console.log(/hello/.test(str)); // true

toString() : 返回正則表達式的字符串

let str = 'hello,xiaogaigai';
console.log(/hello/.toString()); // “/hello/”

3.正則表達式的修飾符,可以組合使用

修飾符 描述
i 不區分大小寫
g 全局搜索(查找所有匹配的內容)
m 多行匹配

 

 

 

 

 

4. 正則表達式的模式

模式 描述 栗子🌰
方括號[] 用於查找某個範圍內的字符

[abc] 匹配方括號之間的任何字符

[^abc] 匹配任何不在方括號之間的字符

[0-9] 匹配任何從 0 至 9 的數字

(abc|df) 匹配以“|”分隔的任何選項

[a-z] 匹配任何小寫字字母

[A-Z] 匹配任何大寫字母

[A-z] 匹配任何A到z之間的字母

元字符 擁有特殊含義的字符

\d 匹配數字

\D 匹配非數字

\s 匹配空白字符

\S 匹配非空白字符

\b 匹配單詞邊界

\B 匹配非單詞邊界

\w 匹配單詞字符

\W 匹配非單詞字符

\0 匹配NULL字符

\n 匹配換行符

\f 匹配換頁符

\r 匹配回車符

\t 匹配製表符

\v 匹配製表符

\xxx 匹配以八進制數 xxx 規定的字符

\xdd 匹配以十六進制數 dd 規定的字符

\uxxx 匹配以十六進制數 xxxx 規定的 Unicode 字符

.  匹配單個字符,除了換行和行結束符

量詞 所匹配的字符數量

n+ 匹配任何包含至少一個 n 的字符串

n* 匹配任何包含零個或多個 n 的字符串

n? 匹配任何包含零個或一個 n 的字符串

n{X} 匹配包含 X 個 n 的序列的字符串

n{X,} X 是一個正整數。前面的模式 n 連續出現至少 X 次時匹配

n{X, Y} X 和 Y 爲正整數。前面的模式 n 連續出現至少 X 次,至多 Y 次時匹配

n$ 匹配任何結尾爲 n 的字符串

^n 匹配任何開頭爲 n 的字符串

?=n 匹配任何其後緊接指定字符串 n 的字符串

?!n 匹配任何其後沒有緊接指定字符串 n 的字符串

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5. 常用示例

/*是否帶有小數*/
function    isDecimal(strValue )  {  
   var  objRegExp= /^\d+\.\d+$/;
   return  objRegExp.test(strValue);  
}  

/*校驗是否中文名稱組成 */
function ischina(str) {
    var reg=/^[\u4E00-\u9FA5]{2,4}$/;   /*定義驗證表達式*/
    return reg.test(str);     /*進行驗證*/
}

/*校驗是否全由8位數字組成 */
function isStudentNo(str) {
    var reg=/^[0-9]{8}$/;   /*定義驗證表達式*/
    return reg.test(str);     /*進行驗證*/
}

/*校驗電話碼格式 */
function isTelCode(str) {
    var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
    return reg.test(str);
}

/*校驗郵件地址是否合法 */
function IsEmail(str) {
    var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
    return reg.test(str);
}

參考文獻:https://www.runoob.com/jsref/jsref-obj-regexp.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章