JS 正規表示式相關方法整理

2021-10-02 06:49:13 字數 3098 閱讀 1239

正規表示式相關方法

字串物件

js 通過內建物件 regexp 支援正規表示式。

有兩種方法例項化 regexp 物件:字面量建構函式

字面量:

var reg = /\bis\b/g

建構函式:

var reg = new regexp(』\\bis\\b』,『g』)

1在引擎編譯**時新建正規表示式,2在執行時新建正規表示式,所以1效率更高,而且1比較遍歷和直觀,在實際應用中基本上都使用1。

方法返回值

regexp.prototype.test(str)

true false

regexp.prototype.exec(str)

結果陣列 null

string.prototype.search(reg)

index -1

string.prototype.match(reg)

匹配陣列 null

string.prototype.split(reg)

分割後陣列

string.prototype.replace()

替換後字串

regexp.prototype.test()

布林值,表示當前模式能否匹配到字串。

// 非全域性呼叫

let reg = new regexp('(\\d)-(\\d)-(\\d)','');

reg.test('2015-12-25');

// true

reg.test('2015-12-25');

// true

// 全域性呼叫

let reg1 = new regexp('(\\d)-(\\d)-(\\d)','g');

reg1.test('2015-12-25');

// true

reg1.test('2015-12-25');

// false

regexp.prototype.exec()

陣列或者 null,返回匹配結果。

非全域性呼叫

全域性呼叫時,物件是有狀態的,會將上次匹配後的位置記錄在 lastindex 屬性中。

// 非全域性呼叫

let reg = new regexp('(\\d)-(\\d)-(\\d)','');

let arr = reg.exec('2015-12-25');

// ["2015-12-25", "2015", "12", "25", index: 0, input: "2015-12-25", groups: undefined]

arr = reg.exec('2015-12-25');

// ["2015-12-25", "2015", "12", "25", index: 0, input: "2015-12-25", groups: undefined]

// 全域性呼叫

let reg1 = new regexp('(\\d)-(\\d)-(\\d)','g');

arr = reg1.exec('2015-12-25');

// ["2015-12-25", "2015", "12", "25", index: 0, input: "2015-12-25", groups: undefined]

arr = reg1.exec('2015-12-25');

// null

string.prototype.search(reg)
let reg1 = new regexp('(\\d)-(\\d)-(\\d)','g');

i='2015-12-25'.search(reg1); //0

i='2015-12-25'.search(reg1); //0 忽略 g

string.prototype.match(reg)

非全域性呼叫(結果類似 exec() 方法)

全域性呼叫

// 非全域性

let reg3 = new regexp('(\\d)-(\\d)-(\\d)','');

'2015-12-25 2020-01-18'.match(reg3);

// ["2015-12-25", "2015", "12", "25", index: 0, input: "2015-12-25 2020-01-18", groups: undefined]

// 全域性

let reg2 = new regexp('(\\d)-(\\d)-(\\d)','g');

'2015-12-25 2020-01-18'.match(reg2);

// ["2015-12-25", "2020-01-18"]

string.prototype.split()

可以傳入正則,也是將引數預設轉換為正則。

如果分隔符是包含捕獲括號的正規表示式,則每次分隔符匹配時,捕獲括號的結果(包括任何未定義的結果)將被拼接到輸出陣列中。但是,並不是所有瀏覽器都支援此功能。

let mystring = "hello 1 word. sentence number 2.";

let splits = mystring.split(/(\d)/);

// ["hello ", "1", " word. sentence number ", "2", "."]

string.prototype.replace()

function 會在每次匹配替換的時候呼叫,有四個引數

'a1b2c3d4e5'.replace(/\d/g,function(match,index,origin));13

579"a2b3c4d5e6"

'a1b2c3d4e5'.replace(/(\d)(\w)(\d)/g,function(match,group1,group2,group3,index,origin));

1 "1" "b" "2"

5 "3" "d" "4"

"a1bc3de5"

JS正規表示式整理

金額校驗類,包含正負,小數點後兩位 function chearnum s 0 0 9 0 9 0 9 金額 允許正 負數 var exp 1 9 0 9 0 9 0 0 9 0 9 0 9 金額 允許正負數 var exp 1 9 0 9 0 9 0 0 9 0 9 0 9 if exp.test...

js常用正規表示式整理

判斷身份證號是否是15位或者18位 var re d d 0 9 x if re.test idcard.value 判斷郵箱格式是否正確 var re a za z0 9 a za z0 9 a za z0 9 if re.test email.value 判斷空串和空格 var re s if ...

JS正規表示式方法

使用正規表示式的主要有match,exec,test 1 正規表示式方法test測試給定的字串是否滿足正規表示式,返回值是bool型別的,只有真和假。var user code input name vuser code val var code a za z0 9 if code.test use...