ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript正規表現の基礎入門_JavaScriptスキル

JavaScript正規表現の基礎入門_JavaScriptスキル

WBOY
リリース: 2016-05-16 16:03:01
オリジナル
1365 人が閲覧しました

まず正規表現の利点について理解しましょう:
js で文字列を処理するメソッドを使用して、文字列内の数値を抽出する関数を作成します。

 var str='dgh6a567sdo23ujaloo932';
   function getNumber(obj){
     var arr=[];
     for (var i = 0; i < obj.length; i++) {
       if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
           arr.push(obj.charAt(i));
         }
     }
     return arr;
   };
   console.log(getNumber(str));  //["6", "5", "6", "7", "2", "3", "9", "3", "2"]
ログイン後にコピー

上記の方法で文字列内の数値を取り出しましたが、必要なのは ['6','567','23','932'] の形式であり、関数を変換します。 :

function getNumber(obj){
    var arr=[];
    var temp='';
    for (var i = 0; i < obj.length; i++) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          temp+=obj.charAt(i);//现将相邻的数字连接起来
        }
        else{ //每当连接的数字断开时,就在这执行
          if (temp) {
            arr.push(temp);
            temp='';
          }
        };
    }
    if (temp) { //这里的作用是为了显示最后数字的,原因不想解释
            arr.push(temp);
            temp='';
          }
    return arr;
  };
ログイン後にコピー

次に、正規表現を使用して、この関数によって実装された関数を解決します。

function getNumber2(obj){
    var arr=[];
    var re=/\d+/g;
    arr.push(obj.match(re));
    return arr;
  };
ログイン後にコピー

プログラムの実行結果を詳しく見てみましょう:

<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'>
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6a567sdo23ujaloo932';
  /*function getNumber(obj){
    var arr=[];
    for (var i = 0; i < obj.length; i++) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          arr.push(obj.charAt(i));
        }
    }
    return arr;
  };*/
  function getNumber(obj){
    var arr=[];
    var temp='';
    for (var i = 0; i < obj.length; i++) {
      if (obj.charAt(i)>='0'&&obj.charAt(i)<='9'){
          temp+=obj.charAt(i);//现将相邻的数字连接起来
        }
        else{ //每当连接的数字断开时,就在这执行
          if (temp) {
            arr.push(temp);
            temp='';
          }
        };
    }
    if (temp) { //这里的作用是为了显示最后数字的,原因不想解释
            arr.push(temp);
            temp='';
          }
    return arr;
  };
  function getNumber2(obj){
    var arr=[];
    var re=/\d+/g;
    arr.push(obj.match(re));
    return arr;
  };
  console.log(getNumber(str));
  console.log(getNumber2(str)); 
};
</script>
<body>
</body>
</html>
ログイン後にコピー

上記の例から、正規表現による方法でも同じ効果があることがわかりますが、コードが短くなり、より効率的になります。これが正規表現の利点です。
正規表現は文字列をより効率的に処理するために作成されます。これらは文字列処理メソッドと同じですが、より効率的かつ簡潔です (正規表現は文字列のみを処理できます)。

いくつかの一般的な正則化方法を体系的に学習してみましょう:


その前に、正規表現の書き方について説明します。正規表現は他のオブジェクトの array()、object()、Date() などと同じで、すべて初期化メソッドがあります

var re=/ここに一致するものを記述する必要があります。記述しない場合は、シンボルに焦点を当てるだけです//これは、次の記事で直接使用します。
var re=new RegExp(); //この方法でも作成できることは皆さんご存知ですが、省略形との違いはパラメータの受け渡しが少し違うことです

(1)テスト

意味: 文字列を定期的に照合し、照合が成功した場合は true を返し、それ以外の場合は false を返します。 構文: re.test(string);

まずエスケープ文字について話しましょう:
/s スペース /S 非スペース /d 数字 /D 非数字 /w 文字 (文字、数字、アンダースコア) /W 非文字
例: 文字列がすべて数字であるかどうかを判断します


<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6a567sdo23ujaloo932';
  var str2='123456';
  function allNumber(obj){
    var re=/\D/;//定义正则对象匹配非数字,只要有不是数字的就是匹配结束返回结果
    if (re.test(obj)) {
      alert('不全是数字');
    }
    else{
      alert('全是数字');
    };
  };
  allNumber(str);
  allNumber(str2);

};
</script>
<body>
</body>
</html>

ログイン後にコピー
(2) 検索


意味: 定期的に文字列を照合します。一致が成功した場合は、一致した位置が返されます。それ以外の場合は、文字列処理メソッドの Indexof() と同じ関数が返されます。 構文: string.search(re);

[color=Red]注: 正規表現ではデフォルトで大文字と小文字が区別されます。大文字と小文字を区別しないようにするには、i フラグ;[/color]

を追加します。 例、文字列内の特定の文字
の大文字と小文字を区別しない正規一致


<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6b567sdo23ujaloo932';
  function searchStr(obj){
    var re=/B/i;//定义正则对象匹配b字符,不区分大小写
    alert(obj.search(re));  
  };
  searchStr(str);
};
</script>
<body>
</body>
</html>
ログイン後にコピー
(3) 一致

意味: 定期的に文字列を照合します。照合が成功した場合は、成功した照合の配列が返されます。それ以外の場合は、Null
が返されます。 構文: string.match(re);

[color=Red] 注: 正規表現のデフォルトでは、一致が成功すると直ちに終了して対応する値が返され、一致は続行されません。すべてを検索したい場合は、 g (グローバル マッチング) [/color]

を追加する必要があります。 例: 文字列内の連続する数字を照合して配列に格納します (連続する数字は配列の項目として使用されます)

プログラム内の「 」は、一致が少なくとも 1 回発生することを意味します。なぜこれを行うのですか?
先ほど、「正規表現のデフォルトでは、一致が成功すると直ちに終了し、対応する値を返します。その後、文字列内で数値が一致すると終了し、数値が返されます」と述べました。このとき必要なのは、 g を使用してすべての要素に一致させることです。

連続する数値には明確な数がないことに気付いたことがありますか? " " を使用して、動的な数値の数を満たすことができます。




<!DOCTYPE>
<html>
<head>
  <meta charset='utf-8'> 
  <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
  var str='dgh6b567sdo23ujaloo932';
  function searchStr1(obj){
    var re=/\d/;  
    return obj.match(re);
  };
  function searchStr2(obj){
    var re=/\d/g;  
    return obj.match(re);
  };
  function searchStr3(obj){
    var re=/\d\d/g;//全局匹配2位数  
    return obj.match(re);
  };
  function searchStr4(obj){
    var re=/\d+/g;  
    return obj.match(re);
  };
  console.log(searchStr1(str));
  console.log(searchStr2(str));
  console.log(searchStr3(str));
  console.log(searchStr4(str));

};
</script>
<body>
</body>
</html>

ログイン後にコピー
(4)

を置き換えます 意味: 定期的に文字列を照合し、正常に照合された文字列が新しい文字列に置き換えられる場合
構文: string.replace(re);

例: 文字列内のすべての a を b

に置き換えます


当面はここに書いて、更新情報をフォローしていきます。 。 。
<!DOCTYPE>
<html>
<head>
 <meta charset='utf-8'> 
 <title></title>
</head>
<script type="text/javascript">
window.onload=function(){
 var str='daah6b5a7sdo23ujaloo932';
 function replaceStr(obj){
  var re=/a/g; //全局匹配a
  return obj.replace(re,'b');
 };
 console.log(replaceStr(str));
};
</script>
<body>
</body>
</html>
ログイン後にコピー
以上がこの記事の全内容です。皆さんに気に入っていただければ幸いです。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート