RegExp正規表示式

2021-09-24 17:50:31 字數 2086 閱讀 6301

var regex = new regexp('xyz', 'i'):第乙個引數是字串,第二個引數是修飾符

var regex = new regexp(/xyz/i):引數是匹配模式和修飾符

var regex = new regexp(/xyz/g, 'i'):僅es6支援,第二個引數會覆蓋第乙個引數的修飾符,regexp.flags獲取正則物件的修飾符值,此時的值為i

說一下u字元的五方面用處

彌補點字元不能匹配大於0xffff的字元,點(.)字元在正規表示式中,含義是除了換行符以外的任意單個字元。對於碼點大於0xffff的 unicode 字元,點字元不能識別,必須加上u修飾符。就可以匹配四位元組的單個字元啦

var s = '?';

/^.$/.test(s) // false

/^.$/u.test(s) // true

2.unicode 字元表示法

es6 新增了使用大括號表示 unicode 字元,這種表示法在正規表示式中必須加上u修飾符,才能識別當中的大括號,否則會被解讀為量詞。 

/\u/.test('a') // false

/\u/u.test('a') // true

/\u/u.test('?') // true

3.量詞

使用u修飾符後,所有量詞都會正確識別碼點大於0xffff的 unicode 字元。

/a/.test('aa') // true

/a/u.test('aa') // true

/?/.test('??') // false

/?/u.test('??') // true

(4)預定義模式

u修飾符也影響到預定義模式,能否正確識別碼點大於0xffff的 unicode 字元。就是匹配的字元可以使4個位元組的啦,

/^\s$/.test('?') // false

/^\s$/u.test('?') // true

function codepointlength(text) 

var s = '??';

s.length // 4

codepointlength(s) // 2

(5)i 修飾符

有些 unicode 字元的編碼不同,但是字型很相近,比如,\u004b\u212a都是大寫的k

/[a-z]/i.test('\u212a') // false

/[a-z]/iu.test('\u212a') // true

var s = 'aaa_aa_a';

var r1 = /a+/g;

var r2 = /a+/y;

r1.exec(s) // ["aaa"]

r2.exec(s) // ["aaa"]

r1.exec(s) // ["aa"]

r2.exec(s) // nu

屬性:lastindex屬性指定每次搜尋的開始位置,g和y都支援此屬性

regexp.prototype.sticky 屬性:判斷是否設定了y屬性,返回布林型別

test():檢查是否有匹配

exec():返回匹配的字串,一次只能返回乙個匹配值

match():返回乙個或多個返回值,全域性搜尋下(g)下返回多個匹配值,非全域性搜尋下返回單個匹配值,(y下返回單個匹配值)

replace():返回按照正則規則替換後的字串,用法特多,第乙個值是匹配值,第二個值替換值

split():按照正則規則模式切割字串,返回切割後的字串

search():返回正規表示式第一次匹配的位置

RegExp正規表示式

什麼是 regexp?regexp 是正規表示式的縮寫。當您檢索某個文字時,可以使用一種模式來描述要檢索的內容。regexp 就是這種模式。簡單的模式可以是乙個單獨的字元。更複雜的模式包括了更多的字元,並可用於解析 格式檢查 替換等等。您可以規定字串中的檢索位置,以及要檢索的字元型別,等等。var ...

正規表示式 RegExp()

字串處理 split 分割字串 charat 0 提取某個字元 substring 1,5 獲取字串 search a 返回位子,否則 1 正規表示式 字串匹配工具 str.match d g 所有匹配以陣列的形式返回 風格 風格 var re new regexp a var str abcdef...

正規表示式REGEXP

正規表示式 regular expression,regexp 元字元 匹配任意單個字元 匹配指定範圍內的任意單個字元 匹配指定範圍外的任意單個字元 字元集合 digit lower upper punct space alpha alnum 匹配次數 貪婪模式 匹配其前面的字元任意次 a,b,ab...