正規表現の一般的なオブジェクトの整理
7018 ワード
jsの正規表現に関する方法は全部で6つあります.
文字列オブジェクトの方法4つ:search()、match()、replace()、split()1、search():正規表現検索と一致する最初の文字列の位置を返します.マッチが見つかったら、search方法は整数値(一致文字の下付き)を返します.マッチが見つからなかったら-1を返します.
ステップの使い方:
文字列オブジェクトの方法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
}