正規表現のメモの整理について
6753 ワード
基礎知識
一元文字
にりょう語
三集合文字クラス
四枝
五境界が終わり始めた
ろくしゅうきごう
七貪欲モードと非貪欲モードjsデフォルト貪欲モード、すなわち最大可能なマッチングを非貪欲モードに変更したい場合は、後に追加しますか?
8パケットと参照とキャプチャパケットは、上記の量詞の役割と文字のセットを正則的に非常に強力な機能です.構文丸括弧(*);
すべての()を使って逮捕されてグループになるわけではありません.次に、非キャプチャパケットがパフォーマンスを向上させ、論理的使用を簡素化することについて説明します.
九展望正則表現はテキストヘッダから着実に解析を開始しようとし、テキストの末尾方向を「前」と呼ぶ.左から右へ
展望とは、断言に属するかどうかを前向きにチェックすることです.バックグラウンド/バックグラウンド方向は逆ですがjavascriptではバックグラウンドはサポートされていません.
呼び出し方法
よく使う test戻りブール値 search検索された対応する位置が返されなければ-1//searchはgが設定されていても1回しか検索されないことに注意してください.繰り返し呼び出しも開始位置から replace置換 splitは配列に分割しても正則を書くことができます.マッチング分割が見つからない場合は自己変配列 matchは、execが返す配列に一致する文字列と類似していて異なる.書き方が異なるmatchは文字列の方法で、str.match(reg)execは正規表現の方法で、書き方はreg.exec(str)
手当たり次第に簡単で正則である.
オンラインの正規可視化サイトもたくさんありますが、コピーしてチェックしてみると面白いです.クリックして正規可視化ページにジャンプ
markは参考までに訂正してendを補充することを歓迎します
一元文字
\b
\d [0-9]
\w [a-z0-9_]
\s [\t\v
\r\f] \t ,\v ,
,\r ,\f
\B
\D [^0-9]
\W [^a-z0-9_]
\S [^\t\v
\r\f]
.
.*
.?
\u4e00-\u9fa5
にりょう語
{m,n} m-n , m
{n,} n
{n} n
? 0 1, {0,1}
+ 1 {1,}
* 0 n {0,}
eg:
/\d?/ // 1 0
/\d{2,4}/ // 2 4
/\s+java\s+/ // 1 java
/[^(]*/ // 1
三集合文字クラス
[abc] a/b/c
[^abc] abc
[a-z] a z
// : -
'ahd-fj-k'.replace(/[a-z]/g,'A') // 》AAA-AA-A
//
1. \
'ahd-fj-k'.replace(/[a-z\-]/g,'B') // BBBBBBBB
2. -
'ahd-fj-k'.replace(/[a-z\-]/g,'B') // BBBBBBBB
//() like this
//'(122)do('.replace(/[(\d)]/g,'A') AAAAAdoA
//
四枝
123|34|567 // 123 34 567
五境界が終わり始めた
^ // []
$ //
ろくしゅうきごう
g //
i //
m //
// 3
七貪欲モードと非貪欲モードjsデフォルト貪欲モード、すなわち最大可能なマッチングを非貪欲モードに変更したい場合は、後に追加しますか?
:
'123456789'.replace(/\d{3,6}/,'XX') // XX
// 6 》X 3 X
'123456789'.replace(/\d{3,6}?/,'XX') // XXX
// 3 〉 3 X
8パケットと参照とキャプチャパケットは、上記の量詞の役割と文字のセットを正則的に非常に強力な機能です.構文丸括弧(*);
/([0-9])[a-z]+\1{3}/.test('2aa222') //true
/([0-9]+)[a-z]+\1/.test('12aa12') //true
/([0-9]+)[a-z]+\1/.test('12aa13') //false
// 。 "\1" ,
/.*/.test('sdlksdjkssdkl')
// true
すべての()を使って逮捕されてグループになるわけではありません.次に、非キャプチャパケットがパフォーマンスを向上させ、論理的使用を簡素化することについて説明します.
**(***) //
(?:***) // **
:
a1b2c3d4 +1
'a1b2c3d4'.replace(/(\d)/g,function($1){
return $1*1+1
})
// a2b3c4d5
2015-12-25 12 25 2015
'2015-12-25'.replace(/(\d{4})-(\d{2})-(\d{2})/g,'$2 $3 $1 ')
// 12 25 2015
:
'2015-12-25'.replace(/(\d{4})-(?:\d{2})-(\d{2})/g,'$2 $3 $1 ')
// () ?: 。 $1 2015, $2 25
// 25 $3 2015
九展望正則表現はテキストヘッダから着実に解析を開始しようとし、テキストの末尾方向を「前」と呼ぶ.左から右へ
展望とは、断言に属するかどうかを前向きにチェックすることです.バックグラウンド/バックグラウンド方向は逆ですがjavascriptではバックグラウンドはサポートされていません.
:
'a2*3w4sb'.replace(/\w(?=\d)/g,'X') // X2*3X4sb
// \w 。
//(?=\d) 。
// \w ( | | ) \d 。
// a2 a w4 w;
:
'a2*3w4sb'.replace(/\w(?!\d)/g,'X') // aX*XwXX
// \w 。
//(?!\d) 。
// \w ( | | ) \d 。
// 2* 2 3w 3 4s 4 sb s b ;
呼び出し方法
Js RegExp
var reg = new RegExp('^[a-z]+[0-9]$', 'gi')
Perl
var reg = /^[a-z]+[0-9]$/gi
よく使う
:
/^\d+$/.test('12637') //true
/^\d+$/.test('sdk') //false
'ad1cd2c'.search(/\d/g) //2
'adcd'.search(/\d/g) //-1
('a1b2c3').replace(/\d/g,' ') //a b c
'a12b23c34'.split('1') //["a", "2b23c34"]
'a12b23c34'.split(/\d{2}/g) //["a", "b", "c", ""]
'a12b23c34'.split(/[23]/g) //["a1", "b", "", "c", "4"]
'a12b23c34'.split(/[55]/g) //["a12b23c34"]
:
var reg = new RegExp("abc") ;
var str = "3abc4,5abc6";
str.match(reg);
var reg = new RegExp("abc") ;
var str = "3abc4,5abc6";
reg.exec(str );
---------------------------------------
:
**exec match , ;**
var reg = new RegExp("[a-z]+") ;
var str = "1abc2,3abc4";
alert(str.match(reg));
alert(reg.exec(str));
// abc
:
**match ;exec 。**
var reg = new RegExp("[a-z]+","g") ;
var str = "1abc2,3bcd4";
console.log(str.match(reg)); //["abc", "bcd"]
console.log(str.match(reg)); //["abc", "bcd"]
console.log(reg.exec(str)); //["abc"]
console.log(reg.exec(str)); //["bcd"]
//match ; exec 。
:
**match exec **
var reg = new RegExp("a(bc)") ;
var str = "3abc4,5abc6";
console.log(str.match(reg)); //["abc", "bc"]
console.log(reg.exec(str)); //["abc", "bc"]
:
**match , ;
exec
**
var reg = new RegExp("a(bc)","g") ;
var str = "3abc4,5abc6";
console.log(str.match(reg)); // ["abc", "abc"]
console.log(str.match(reg)); // ["abc", "abc"]
console.log(reg.exec(str)); // ["abc", "bc", index: 1]
console.log(reg.exec(str)); // ["abc", "bc", index: 7]
手当たり次第に簡単で正則である.
/^\d+$/.test('2l') //
/^\d{n}$/.test('2222') // n
/^\d{n,}$/.test('22222') // n
/^\d{m,n}$/.test('22222') // m n
/^[a-z]+$/i //
/^[A-Z]+$/.test('SS’) //
/^[0-9a-z]+$/i.test('1223ddsSSk') //
/^\w+$/.test('wS233_') //
/^[\u4e00-\u9fa5]+$/.test(' ') //
// : 1 34568 9
/^1[3|4|5|6|8]{1}\d{9}$/.test('13347834892')
// YYYY-MM-DD
1/2 3 - [0|1][1-9] - [0-1][1-9]
/^[1-9]\d{3}-[0-1]\d-[0-3]\d$/.test('2017-12-20')
// html :
' 。
'.replace(/]+>/g,'')
// email : @ .com
/^\w+\@[a-z0-9]+(.com)$/.test('@qq.com')
// Email :
^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$
オンラインの正規可視化サイトもたくさんありますが、コピーしてチェックしてみると面白いです.クリックして正規可視化ページにジャンプ
markは参考までに訂正してendを補充することを歓迎します