JavaScript RegExpオブジェクトについて詳しく説明します。

4919 ワード

RegExpとは?
正規表現は文字のモードオブジェクトを記述します。
あるテキストを検索すると、検索する内容をモードで説明することができます。RegExpはこのモードです。
シンプルなパターンは、単独の文字であっても良いです。
より複雑なモードは、より多くの文字を含み、解析、書式チェック、置換などに利用できます。
文字列の検索位置や検索する文字の種類などを指定できます。
RegExpオブジェクトは、元々JavaScriptで正規表現を示すオブジェクトです。
オブジェクトを作成する方法は、var RegExp = new RegExp(pattern, attributes);です。
パラメータpatternは正規表現の規則または正規表現モードを表す文字列を指定します。
パラメータはオプションのパラメータであり、マッチングモードの修飾子を表します。3つのパラメータを含みます
1.  i:大文字と小文字のマッチングに敏感ではない。

<script text="text/javascript">
  var txt = 'Hello World!'
  var reg = new RegExp('hello', 'i');
  if(reg.test(txt)) {
    console.log(txt.match(reg));
  }
</script>
2.  g:グローバルマッチングを実行します。最初のマッチ項目が見つからない場合は、すべてのマッチを検索して停止します。

<script text="text/javascript">
  var txt = 'This is just a test.'
  var reg = new RegExp('is', 'g');//     
  var reg01 = new RegExp('is', 'gi');//      
  if(reg.test(txt)) {
    console.log(txt.match(reg));//["is", "is"]
    console.log(txt.match(reg).length);//2
  }
</script>
3.  m:複数行マッチを実行します。属性が設定されていない場合は、検索された文字列全体の開始(末尾)位置にのみマッチします。この属性を設定すると、^($)は検索された文字列の「\r」または「」の後に位置合わせを開始することもできます。

<script type="text/javascript">
  //            "an",  "an"       , "an"          。
  var txt1 = 'This is an
apple'; var reg1 = /an$/; console.log(txt1.match(reg1));//null // "an" var txt2 = 'This is an
apple'; var reg2 = /an$/m; console.log(txt2.match(reg2));//["an", index: 8, input: "This is an↵ apple"] // var txt3 = 'This is an
apple'; var reg3 = /^\sapp/; console.log(txt3.match(reg3));//null var txt4 = 'This is an
apple'; var reg4 = /^\sapp/m;// /^ app/m console.log(txt4.match(reg4));//[" app", index: 11, input: "This is an↵ apple"] </script>
i,g,mの三つの修飾子は互いに組み合わせて同時に使用することができる。
以上のm修饰子の例では、var reg 4=/^\sapp/の\"は、トランスミッション文字です。コンストラクタを使ってRegExpオブジェクトを作成する場合、正規表現の\"を\"で代用します。

<script type="text/javascript">
  var txt4 = 'This is an
apple'; var reg4 = new RegExp('^\\sapp', 'm'); console.log(txt4.match(reg4));//[" app", index: 11, input: "This is an↵ apple"] </script>
RegExpオブジェクトのプロパティ
1.global
正規表現に「g」の修飾子があるかどうかを返します。

<script type="text/javascript">
  var txt = 'This is just a test';
  var reg = new RegExp('st', 'g');
  if(reg.global) {
    console.log(txt.match(reg));//["st", "st"]
  }
</script>
2.ignoreCase
正規表現に「i」の修飾子があるかどうかを返します。
3.multiline
正規表現に「m」の修飾子があるかどうかを返します。
4.lastIndex
次のマッチ開始時の文字列の位置をマークします。

<script type="text/javascript">
  var txt = 'If you love code, you should code everyday.';
  var reg = new RegExp('ou', 'g');
  var length = txt.match(reg).length;
  for(var i = 0; i < length; i++) {
    reg.test(txt);
    console.log(reg.lastIndex);
  }
</script>
5.source
正規表現のモードマッチングを行うテキストまたは表式を返します。返したテキストには修繕子「i」、「g」、「m」が含まれていません。正規表現の直接量で使うデリミタも含まれていません。

<script>
  var reg1 = new RegExp('yoho', 'm');
  var reg2 = new RegExp('\\w');
  var reg3 = /\w/m;
  console.log(reg1.source);//yoho
  console.log(reg2.source);//\w
  console.log(reg3.source);//\w
</script>
RegExpオブジェクト方法
1.mpile
正規表現を変更または編集し直します。(Operaブラウザはこの方法をサポートしていません。)
正規表現の再定義については、以下の方法で実現できるので、この方法の応用シーンについてはよく分かりません。

<script>
  var reg = new RegExp('ou', 'g');
  reg = /\w/;
</script>
2.exec
検索文字列の正規表現のマッチング結果

<script>
  var txt = 'If you love code, you should code everyday.';
  var reg = new RegExp('ou', 'g');
  var length = txt.match(reg).length;
  for(var i = 0; i < length; i++) {
    console.log(reg.exec(txt));
  }
</script>
3.test
文字列がマッチする正規表現と一致するかどうかを検出します。

<script>
  var txt = 'I code everyday.';
  var reg = new RegExp('code');
  console.log(reg.test(txt));//true
</script>
以上は小编が绍介したJavaScript RegExpの対象です。皆さんに何かお聞きしたいことがあれば、メッセージをください。小编はすぐにご返事します。ここでも私たちのサイトを応援してくれてありがとうございます。