正規表現の一般的なオブジェクトの整理


jsの正規表現に関する方法は全部で6つあります.
文字列オブジェクトの方法4つ:search()、match()、replace()、split()1、search():正規表現検索と一致する最初の文字列の位置を返します.マッチが見つかったら、search方法は整数値(一致文字の下付き)を返します.マッチが見つからなかったら-1を返します.
var str = 'abd123tr12'
var pattern = /[\d]+/  //        g
console.log(str.search(pattern))  
//     :3
2、match():整合した正則テキストを配列形式で返して文字列strを検索して、正則表現と一致するテキストを一つ以上見つけます.マッチする文字列が見つからない場合、nullを返します.
var str = 'abd123tr12'
var pattern = /[\d]+/g
console.log(str.match(pattern))  
//     :['123','12']
3、スプリット():分割した配列を返して文字列をサブ文字列に分割し、結果を文字列配列として返します.
var str = 'Jenny,Max,Jason,Heliy'
var pattern = /,/
console.log(str.split(pattern))  
//     :["Jenny", "Max", "Jason", "Heliy"]
4、replace():分割された配列を返して文字列をサブ文字列に分割し、結果を文字列配列として返します.
var str = 'abd123tr12'
var pattern = /[\d]+/g
console.log(str.replace(pattern,'Jenny'))
//     :abdJennytrJenny
正規表現オブジェクトの方法は、test()、exec()1、test():true/falseマッチング文字列に正規表現と一致する結果があるかどうか、存在する場合はtrueに戻ります.そうでなければfalseに戻ります.この方法は、ユーザの入力データの正当性を判断するためによく用いられる.
//        
var string = '[email protected]';
var pattern= /^[a-zA-Z0-9\.\-\+\_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/
console.log(pattern.test(string))
//     :true
2、exec()は文字列の正規表現のマッチングを検索するために使用されます.マッチの結果を保存する配列を返します.見つからない場合はnullに戻ります.exec()はやや複雑な関数の最も簡単な使い方で、文字列オブジェクトメソッドmatch()が返した配列と同じです.
var str = 'I wanted to be the man that made you happy'
var pattern = /ma/
console.log(pattern.exec(str))
//    :["ma", index: 19, input: "I wanted to be the man that made you happy"]
console.log(pattern.exec(str)[0]) //ma
console.log(pattern.exec(str).index)  //9
console.log(pattern.exec(str).input)  //I wanted to be the man that made you happy
exec()の戻り値は、マッチングした配列の他に、2つの属性、indexがテキストの最初の文字列の位置にマッチし、inputが検索された文字列があります.
ステップの使い方:
var str = '     13522222222,     13288888888,      13699999999' 
//       ,   13  11    ,     (              )
var reg = /13(\d)(\d{8})/g  //13(\d)(\d{8})         (\d)         (\d{8})        
//  exec()  。    0                  ,       reg              (      ),                    ,    。。。
var arr = reg.exec(str)
console.log(arr)
//    :["13522222222", "5", "22222222", index: 5, input: "     13522222222,     13288888888,      13699999999"]
//       
for(var i=0;i//13522222222
    //5
    //22222222
} 
高次法:正則の整合モードが大域である場合、exec()の挙動はやや複雑である.
var str = "Penny Leonard Sheldon Howard Leonard Penny Sheldon"
var patt = new RegExp("Leonard","g") 
//patt    lastIndex  ,            , exec()        ,lastIndex                  。           exec()  null,  lastIndex    0
var result
while ((result = patt.exec(str)) != null)  {
    console.log(result)
    console.log(patt.lastIndex)
    //["Leonard", index: 6, input: "Penny Leonard Sheldon Howard Leonard Penny Sheldon"]
    //13
    //["Leonard", index: 29, input: "Penny Leonard Sheldon Howard Leonard Penny Sheldon"]
    //36
}