正規表示式相關方法
字串物件
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...