中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript通過RegExp使用正則表達式的方法是什么

發布時間:2023-03-30 11:58:42 來源:億速云 閱讀:93 作者:iii 欄目:開發技術

本篇內容介紹了“JavaScript通過RegExp使用正則表達式的方法是什么”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

RegExp

ECMAScript通過RegExp類型支持正則表達式。正則表達式使用類似Perl的簡潔語法來創建:

let expression = /pattern/flags;

這個正則表達式的pattern(模式)可以是任何簡單或復雜的正則表達式,包括字符類、限定符、分組、向前查找和反向引用。每個正則表達式可以帶零個或者多個flags(標記),用于控制正則表達式的行為。下面給出了表示匹配模式的標記。

  • g:全局模式,表示查找字符串的全部內容,而不是找到第一個匹配的內容就結束

  • i:不區分大小寫,表示在查找匹配時忽略pattern和字符串的大小寫

  • m:多行模式,表示查找到一行文本末尾時會繼續查找

  • y:粘附模式,表示只查找從lastIndex開始及之后的字符串

  • u:Unicode模式,啟用Unicode匹配

  • s:dotAll模式,表示元字符.匹配任何字符(包括\n 或\r)

使用不同模式和標記可以創建出各種正則表達式,比如:

// 匹配字符串中的所有“at”
let pattern1 = /at/g;
//匹配第一個“bat”或者“cat”,忽略大小寫
let pattern2 = /[bc]at/i;
//匹配所有以“at”結尾的三字符組合,忽略大小寫
let pattern3 = /.at/gi;

與其他語言中的正則表達式類似,所有元字符在模式中也必須轉義,包括:

( [ { \ ^ $ | ) ] } ? * + .

元字符在正則表達式中都有一種或多種特殊功能,所以要匹配上面這些字符本身,就必須使用反斜杠來轉義。下面是幾個例子:

//匹配第一個“bat”或“cat”,忽略大小寫
let pattern1 = /[bc]at/i;
//匹配第一個"[bc]at",忽略大小寫
let pattern2 = /\[bc\]at/i;
//匹配所有以“at”結尾的三字符組合,忽略大小寫
let pattern3 = /.at/gi;
//匹配所有".at",忽略大小寫
let pattern4 = /\.at/gi

這里的pattern1匹配”bat“或”cat“,不區分大小寫。要直接匹配“[bc]at",左右中括號都必須像pattern2中那樣使用反斜杠轉義。

在pattern3中,點號表示"at"前面的任意字符都可以匹配。如果想匹配".at",那么要像pattern4中那樣對點號進行轉義。

前面例子中的正則表達式都是使用字面量形式定義的。正則表達式也可以使用RegExp構造函數來創建,它接收兩個參數:模式字符串 和 (可選的)標記字符串。任何使用字面量定義的正則表達式也可以通過構造函數來創建,比如:

//匹配第一個“bat”或“cat”,忽略大小寫
let pattern1 = /[bc]at/i;
//跟pattern1一樣,只不過是用構造函數創建的
let pattern2 = new RegExp("[bc]at","i");

這里的pattern1和pattern2是等效的正則表達式。注意,RegExp構造函數的兩個參數都是字符串。因為RegExp的模式參數是字符串,所以在某些情況下需要二次轉義。所有元字符都必須二次轉義,包括轉義字符序列,如\n (\轉義后的字符串是\,在正則表達式字符串中則要寫成\ \ \ \

字面量模式對應的字符串
/ \ [bc \ ]at/“\ \ [bc \ \ ]at”
/ \ .at/“\ \ .at”
/name \ /age/“name\ /age”
/ \d.\d{1,2}/“\ \d.\ \d{1,2}”
/ \ w\ \hello \ \123/“\ \w \ \ \ \hello\ \ \ \123”

此外,使用RegExp也可以基于已有的正則表達式實例,并可選擇性地修改它們的標記:

const rel = /cat/g;
console.log(rel); // "cat/g"
const re2 = new RegExp(rel);
console.log(re2); // "cat/g"

RegExp實例屬性

每一個RexExp實例都有下列屬性,提供有關模式的各方面信息。

  • global:布爾值,表示是否設置了g標記。

  • ignoreCase:布爾值,表示是否設置了i標記。

  • unicode:布爾值,表示是否設置了u標記

  • sticky:布爾值,表示是否設置了y標記。

  • lastIndex:整數,表示在源字符串中下一次搜索的開始位置,始終從0開始。

  • multiline:布爾值,表示是否設置了m標記。

  • dotAll:布爾值,表示是否設置了s標記。

  • source:正則表達式的字面量字符串(不是傳給構造函數的模式字符串),沒有開頭和結尾的斜杠。

  • flags:正則表達式的標記字符串。始終以字面量而非傳入構造函數的字符串模式形式返回(沒有前后斜杠)。

let pattern1 = /\[bc\]at/i;
console.log(pattern1.global); //false
console.log(pattern1.ignoreCase); //true
console.log(pattern1.multiline); //false
console.log(pattern1.lastIndex); //0
console.log(pattern1.source); //"\[bc\]at"
console.log(pattern1.flags); //"i"

RegExp實例方法

RegExp實例的主要方法是exec(),主要用于配合捕獲組使用。這個方法只接受一個參數,即要應用模式的字符串。如果找到了匹配項,則返回包含第一個匹配信息的數組;如果沒有找到匹配項,則返回null。返回的數組雖然是Array的實例,但包含兩個額外的屬性:index和input。index是字符串中匹配模式的起始位置,input是要查找的字符串。這個數組的第一個元素是匹配整個模式的字符串,其他元素是與表達式中的捕獲組匹配的字符串。如果模式中沒有捕獲組,則數組只包含一個元素。來看下面的例子:

let text = 'mom and dad and baby';
let pattern = /mom( and dad(and baby)?)?/gi;
let matches = pattern.exec(text);
console.log(matches.index); // 0
console.log(matches.input); //"mom and dad and baby"
console.log(matches[0]); //"mom and dad and baby"
console.log(matches[1]); //" and dad and baby"

“JavaScript通過RegExp使用正則表達式的方法是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

右玉县| 台南市| 阜南县| 东至县| 阜宁县| 逊克县| 铜川市| 卫辉市| 万山特区| 江山市| 聂拉木县| 吴江市| 新昌县| 德州市| 崇仁县| 湖州市| 长子县| 濉溪县| 禄劝| 红原县| 岳池县| 金堂县| 崇左市| 慈利县| 汉寿县| 四子王旗| 西贡区| 淳化县| 莒南县| 彰化县| 百色市| 南京市| 信宜市| 平乡县| 青岛市| 桑日县| 巴林左旗| 师宗县| 绥化市| 建阳市| 西华县|