JSの基礎知識(3)

配列

配列の紹介

配列もオブジェクトであり、通常のオブジェクトに似ており、いくつかの値を格納するために使用されます.違いは、通常のオブジェクトは文字列を属性値として使用するのに対し、配列は数値をインデックス要素として使用することです.

配列オブジェクトを作成する

配列の長さを取得する:
連続配列の場合、長さ属性を使用して配列の長さ (要素の数) を取得します。
非連続配列の場合、長さ属性を使用して、配列の最大インデックスに 1 を加えた値を取得します。

配列の長さを変更します:
変更された長さが元の長さよりも大きい場合、余分な要素は空になります;
変更された長さが元の長さよりも小さい場合、余分な要素は削除されます

//创建数组对象
var arr = new Array();
//使用typeof检查一个数组时,会返回object
//console.log(typeof arr)   object
//向数组中添加元素
arr[0] = 10;
arr[1] = 11;
arr[2] = 12;
//读取数组中的元素
console.log(arr[0]);
console.log(arr[1]);
console.log(arr[2]);
//获取数组的长度
console.log(arr.length);
//修改数组的长度
arr.length = 10;
//向数组的最后一个位置添加元素
arr[arr.length] = 15;

配列リテラル

リテラルを使用して配列を作成する

//使用字面量来创建数组
var arr = [];
//使用字面量来创建数组时,可以在创建时就指定数组中的元素
var arr = [1,2,3,4,5];
//使用构造函数来创建数组时,也可以同时添加元素,将要添加的元素作为构造函数的参数进行传递
var arr = new Array(1,2,3,4,5);
//字面量
var arr1 = [10]; //创建一个数字,数组中只有一个元素
var arr2 = new Array(10);//创建长度为10的数组
console.log(arr1);// 10
console.log(arr2);//,,,,,,,,,  长度为10
//数组中的元素可以是任意的数据类型,也可以是对象,也可以是函数,也可以放数组
var arr3 = ["hello",1,true,null,undefined,{
    
    name:'猪八戒'},function(){
    
    alert(2)},[1,2,3]]
var obj = {
    
    name:'孙悟空'};
arr3.[arr.length] = obj;

配列内の要素が 1 つだけの数値を作成するvar arr1 = [10];
長さ 10 の配列を作成するvar arr2 = new Array(10);

配列の 4 つの方法

  1. push():
    Add one or more elements to the end of array and return the new length of the array. 追加する要素を
    メソッドのパラメーターとして渡すことができるため、これらの要素は自動的に長さに追加されます配列.
    このメソッドは配列します. 新しい長さが戻り値として返されます.
var arr = ['孙悟空','猪八戒','沙和尚']
var result = arr.push('唐僧','蜘蛛精','白骨精');
console.log(arr)//孙悟空,猪八戒,沙和尚,唐僧,蜘蛛精,白骨精
console.log(result);//6
  1. pop():
    このメソッドは、配列内の最後の要素を削除できます。1 回呼び出して 1 回削除します。
    このメソッドは、削除された要素を戻り値として返します。
var arr = ['孙悟空','猪八戒','沙和尚']
var result = arr.push('唐僧','蜘蛛精','白骨精');
result = arr.pop();
console.log(arr)//孙悟空,猪八戒,沙和尚,唐僧,蜘蛛精
console.log(result);//白骨精
  1. unshift():
    配列の先頭に 1 つ以上の要素を追加し、新しい配列の長さを返します;
    以前のように要素を挿入した後、他の要素のインデックスが順番に調整されます
var arr = ['孙悟空','猪八戒','沙和尚']
var result = arr.push('唐僧','蜘蛛精','白骨精');
result = arr.unshift('牛魔王');
console.log(arr)//牛魔王,孙悟空,猪八戒,沙和尚,唐僧,蜘蛛精
console.log(result);//7
  1. shift() は、
    配列の最初の要素を削除し、削除された要素を戻り値として返すことができます

配列トラバーサル (forEach)

データをトラバースすることは、配列内のすべての要素を取り出すことです

 for(var i=0;i<arr.length;i++){
    
    
   cosole.log(arr[i])
 }

forEach() メソッドを呼び出してトラバースすることもできます (このメソッドはIE8 より上のブラウザーのみをサポートします)。

forEach() メソッドはパラメータとして関数を必要とします. 通常の関数を渡すことはグローバル スコープで関数を定義することと同じであるため、通常は通常の関数は渡されません. したがって, 通常は無名関数が渡されます.

var arr = ['孙悟空','猪八戒','沙和尚']
arr.forEach(function(){
    
    
	console.log('hello')
})

この時点で、 hello が直接 3 回出力されます。

  • このような、私たちが作成したものの、私たちが呼び出していない関数は、コールバック関数と呼ばれます。この関数がブラウザによって呼び出され、ブラウザに渡すだけであることは容易に理解できます。
  • 配列にはいくつかの要素があり、関数は数回実行されます。実行されるたびに、ブラウザーはトラバースされた要素を実際のパラメーターとして渡します。
var arr = ['孙悟空','猪八戒','沙和尚']
arr.forEach(function(a,b,c){
    
    
	console.log('a='+a)
	console.log('b='+b)
	console.log('c='+c)

})

出力:
a = 'Sun Wukong';
a = 'Zhu Bajie';
a = 'Sand Monk';
b = 0;
b = 1;
b =2;
c=Monkey King, Zhu Bajie, Sand Monk;
c=Sun Wukong 、朱八卦、砂僧
c=猿王、朱八卦、沙僧

  • ブラウザーは、コールバック関数で 3 つのパラメーターを渡します。
  • 最初のパラメーターは、現在トラバースされているパラメーター (値) です
  • 2 番目のパラメーターは、現在トラバースされている要素のインデックスです (index)
  • 3 番目のパラメーターは、走査される配列 (obj) です。

スプライスとスライス

スライス:

  • slice() メソッドは、既存の配列から選択した要素を返すことができます
  • 構文: arrayObject.slice(開始、終了)
  • パラメーター: start: 必須。選択を開始する場所、インターセプトの開始位置インデックス (開始インデックスを含む) を指定します。end: インターセプトが終了する位置のインデックス。終了インデックスは含まれません。これは省略でき、この場合、開始インデックス以降のすべての要素が傍受されます。end には負の値を渡すこともできます。負の値を渡すと、後ろから前に向かって計算されます。
  • このメソッドは元の配列を変更しませんが、傍受した要素を新しい数値にカプセル化して返します

スプライス:

  • 配列内の指定された要素を削除、挿入、および置換するために使用できます
  • splice() を使用すると、元の配列に影響を与え、指定された要素を元の配列から削除し、削除された要素を戻り値として返します
  • パラメータ: 1 つ目: 開始位置を示すインデックス; 2 つ目: 削除数を示す; 3 つ目以降: いくつかの新しい要素を渡すことができ、これらの要素は開始位置インデックスの前に自動的に挿入されます。

配列の残りのメソッド

連結:

  • concat() は、2 つ以上の配列を接続して新しい数値を返すことができます
  • このメソッドは元の配列には影響しません
  • 配列だけでなく要素も渡すことができますvar result = arr.concat(arr1,arr2,"牛魔王","铁扇公主");

加入:

  • このメソッドは配列を文字列に変換します
  • 元の配列には影響しませんが、変換された文字列を結果として返します
  • join() では、文字列をパラメータとして指定でき、この文字列は配列内の要素のコネクタになりますarr = ["孙悟空","猪八戒","沙和尚"]; result = arr.join('hello'); 出力'孙悟空hello猪八戒hello沙和尚'
  • コネクタが指定されていない場合、デフォルトでコンマがコネクタとして使用されます。連結が必要ない場合は、空の文字列を使用してください。arr.join('')

逆行する:

  • このメソッドは、配列を逆にするために使用されます
  • 元の配列を直接変更します

選別:

  • 配列内の要素を並べ替えるために使用できます
  • 元の配列にも影響します
  • デフォルトでは Unicode エンコーディングに従ってソートされます. 数値が純粋な数値に対応する場合でも、sort() を使用してソートすると、Unicode エンコーディングに従ってソートされます. したがって、数値をソートするときに、間違っている可能性があります.情報。
  • ソート ルールを自分で指定することも、コールバック関数を sort() に追加してソート ルールを指定することもできます。コールバック関数には 2 つの仮パラメータを定義する必要があり、ブラウザは配列内の要素を実際のパラメータとして使用してコールバック関数を呼び出します。どの要素を使用してコールするかは不明ですが、必ず a が必要です配列の b の前
  • 0 より大きい値が返された場合、要素は交換されます。0 より小さい値が返された場合、要素の位置は変更されません。0 に等しい値が返された場合、要素は等しくなり、位置は変更されません。変化
arr = [5,4,2,1,3,6,8,7]
arr.sort(function(a,b){
    
    
//前面的大
	if(a > b){
    
    
		return 1;
	}else if(a < b){
    
    
		return -1;
	}else{
    
    
		return 0;
	}
})

に相当

arr = [5,4,2,1,3,6,8,7]
arr.sort(function(a,b){
    
    
	//升序排列
	return a - b;
})

結論:昇順:ab、降順:ba

機能(補足)

call() と apply()

  • これら 2 つのメソッドは関数オブジェクトのメソッドであり、関数オブジェクトを通じて呼び出す必要があります。
  • 関数が call () と apply () を呼び出すと、実行する関数が呼び出されます
function fun(){
    
    
	alert("我是fun函数!");
}
fun.aaply();
fun.call();
  • call および apply() を呼び出すときに、オブジェクトを最初のパラメーターとして指定できます。このとき、このオブジェクトが関数実行の this になります。
  • call() メソッドはオブジェクトの後に実パラメータを順番に渡すことができますfun.call(obj,2,3)が、apply() メソッドは実パラメータを配列にカプセル化して均一に渡す必要があります。fun.apply(obj,[2,3])

これは要約します:

  • 関数として呼び出された場合、これはウィンドウです。
  • メソッドとして呼び出された場合、これはメソッドを呼び出すオブジェクトです
  • コンストラクターとして呼び出された場合、これは新しく作成されたオブジェクトです
  • call と apply で呼び出す場合、これで指定されたオブジェクト

引数

関数を呼び出すとき、ブラウザーは毎回 2 つの暗黙的なパラメーターを渡します。

  1. 関数のコンテキスト オブジェクト this
  2. 実際のパラメーターをカプセル化するオブジェクト引数

引数:

  • 引数は配列のようなオブジェクトであり、インデックスによってデータを操作したり、長さを取得したりすることもできます
  • 関数を呼び出すとき、渡す実際のパラメーターは引数にカプセル化されます
  • arguments.length を使用して、実際のパラメーターの長さを取得できます。
  • 仮パラメータが定義されていない場合でも、引数を使用して実パラメータを使用できます。arguments[0] は最初の実パラメータを示します
  • 引数には callee 属性があり、この属性オブジェクトは関数オブジェクトであり、現在指されている関数のオブジェクトです。
function fun(){
    
    
	console.log(arguments);
	console.log(arguments instanceof Array);//false
	console.log(Array.isArray(arguments));//false
	console.log(arguments[1]);//2	
	console.log(arguments.callee);//打印出fun函数
}
fun(1,2);

埋め込みオブジェクト: 日付オブジェクト

  • Data オブジェクトを使用して JS で時間を表す
  • コンストラクターを使用して直接オブジェクトを作成すると、現在のコードの時間がカプセル化されます。次の例では: はlet d = new Date()実行時間です。
let d = new Date();
console.log(d);//打印出当前时间
  • 指定された時間オブジェクトを作成します。時間を表す文字列をコンストラクターのパラメーターとして渡す必要がありますlet d2 = new Data('12/03/2016 11:10:30')
  • 日付形式: 月/日/年 時:分:秒

方法:

  • getDate(): 現在の日付オブジェクトが数日 (1 ~ 31)、月の特定の日であることを取得します
  • getDay(): Date オブジェクトから曜日 (0-6) を返します。0 は日曜日を意味します
  • getMonth(): 0 から始まる現在の時刻オブジェクトの月 (0-11) を取得します。0 は 1 月を意味します。通常どおりに変換する場合は、1 つ追加する必要があります
  • getFullYear(): 現在のイベント オブジェクトの 4 桁の年を取得します
  • getTime(): 現在のオブジェクトのタイムスタンプを取得します。タイムスタンプは、グリニッジ標準時 1970 年 1 月 1 日の 0:00:00 から現在の時刻までのミリ秒数を表します (1 秒は 1000 ミリ秒に相当します)。コンピューターの時間単位を統一するために、コンピューターの最下層は時間を節約するときにタイムスタンプを使用します。
  • 現在のタイムスタンプを取得します。time = Date.now()

アプリケーション:
タイムスタンプを使用してコード実行のパフォーマンスをテストする

//获取当前的时间戳
let start = Date.now();
for(let i=0;i<100;i++){
    
    
	console.log(i);
}
let end = Date.now();
console.log("执行了"+(end - start)+'毫秒');

算数

  • Math は他のオブジェクトとは異なります. コンストラクタではありません. ツール クラスに属しており、オブジェクトを作成する必要はありません. 数学演算に関連するプロパティとメソッドをカプセル化しています.
  • Math.PI は円周率を意味します
  • Math.abs() を使用して、数値の絶対値を計算できますconsole.log(Math.abs(-1)) //1
  • Math.ceil() は数値を切り上げることができ、値がある限り小数点以下の桁数が自動的に増加しますconsole.log(Math.ceil(1.001)) //2
  • Math.floor() は数値を切り捨てることができ、小数点以下は削除されますconsole.log(Math.floor(1.99)) //1
  • Math.round() は数値を整数に丸めることができますconsole.log(Math.round(1.4)) //1
  • Math.random() を使用して 0 ~ 1 の乱数を生成できます。0 ~ 1 は表示されません。0 ~ 10 の乱数を生成したい場合、console.log(Math.random()*10)整数を生成したい場合。console.log(Math.round(Math.random()*10))
  • xy 間の乱数を生成するMath.round(Math.random()*(y-x)+x)
  • Math.max() は、複数の数値の最大値を取得できます。Math.max(10,34,56,44);
  • Math.min() は、複数の数値の最小値を取得できます。Math.min(10,34,56,44);
  • Math.pow(x,y) は x を y 乗して返します。Math.pow(12,3);
  • Math.sqrt(x) は x の平方根演算を実行します

包装

JS には 3 つのラッパー クラスが用意されており、これらを使用して、基本データ型のデータをオブジェクトString()に変換できます。基本数値型 string を String オブジェクトnumber()
に変換できます。
変換される データ型の数値は Number オブジェクトに変換されます
Boolean(): 基本データ型は Boolean オブジェクトに変換できます

Number 型のオブジェクトを作成する

let num = new Number(3);
console.log(num)//3
console.log(typeof num)//object对象类型

オブジェクトなので、プロパティを追加できます

num.hello = 'weewrqr';
console.log(num.hello);//weewrqr

ラッパー クラスを使用して 2 つのオブジェクトを作成する場合、2 つのオブジェクトは等しくありません

let num1 = new Number(3);
let num2 = new Number(3);
console.log(num1 == num2);//false

理由: 2 つのオブジェクトが比較され、比較はメモリ アドレスです
. 注: 基本データ型のオブジェクトは実際のアプリケーションでは使用されません. 基本データ型のオブジェクトを使用すると、いくつかの比較を行うときに予期しない結果が生じる可能性があります

let b = new Boolean(false);
if(b){
    
    
	alert('我运行了')
}

結果: 「実行しました」ポップアップがまだ表示されます。b はオブジェクトなので、定義時に値を持ちます

ラッパー クラスの使用法:

一般に、メソッドとプロパティはオブジェクトにのみ追加でき、基本的なデータ型には追加できませんが、次の場合はエラーは報告されません。

let s = 123;
s = s.toString();
console.log(s);//123
console.log(typeof s);//string

上記の例では、基本データ型は toString() メソッドを呼び出すだけでなく、数値型を文字列型に正常に変換します. これは、一部の基本データ型の値のプロパティとメソッドを呼び出すと、ブラウザが一時的にラッパーを使用するクラスはそれをオブジェクトに変換し、次にオブジェクトのプロパティとメソッドを呼び出し、呼び出し後に基本データ型に変換します

let s = 123;
s = s.toString();
s.hello = '你好';
console.log(s.hello);//undefined

上記の例では undefined が出力されます.ブラウザがラッパークラスを使って一時的に変換したオブジェクトは一時的なオブジェクトです.sにhello属性を追加する際に,一時的にsをオブジェクトに変換し,オブジェクトに属性を追加します.属性が追加された後、オブジェクトは破棄されます。s.hello を印刷する場合、基本データ型 s の hello 属性を読み取ることになり、基本型は属性を保存できないため、s を一時的に文字列オブジェクトに変換してから hello 属性を読み取る必要がありますが、s before conversion にはありません。したがって、プロパティは未定義です。つまり、すべての呼び出し、すべての変換、変換後の破棄

文字列メソッド

(主に String オブジェクトのメソッドを指します)
基になる文字列は文字配列の形式で格納されます。たとえば、「hello」は ['h', 'e', 'l' の形式で保存されます。 , 'l' ,'o']; したがって:let str = 'hello'; console.log(str.length)//5;console.log(str[1];//e)

charAt()

  • 文字列内の指定された位置にある文字を返すことができます
  • インデックスに従って指定された文字を取得します
let str = 'hello atguigu'
let result = str.charAt(6);
console.log(result);//A

charCodeAt()

  • 指定位置の文字の文字エンコーディング(Unicodeエンコーディング)を取得する
let str = 'hello atguigu'
let result = str.charCodeAt(6);
console.log(result);//97

fromCharCodeAt()

  • 文字エンコーディングに従って文字を取得できます。
  • 文字オブジェクトを使用してこのメ​​ソッドを呼び出します
let result = String.fromCharCode(97);
console.log(result);//a

連結()

  • 2 つ以上の文字列を連結するために使用できます
  • +と同じ
  • 元の文字列には影響しません。出力 str はまだ hello atguigu です。
let str = 'hello atguigu'
let result = str.concat('你好','再见')
console.log(result);//hello atguigu你好再见

の指標()

  • このメソッドは、文字列に指定されたコンテンツが含まれているかどうかを取得できます
  • コンテンツが文字列に含まれている場合は、最初に出現したインデックスが返されます。
  • 指定されたコンテンツが見つからない場合は -1 を返します
  • 検索を開始する場所を指定する 2 番目のパラメーターを指定できます。
let str = 'hello atguigu';
let result1 = str.indexOf('a');
console.log(result1);//6
let result2 = str.indexOf('a',1)//6

lastIndexOf()

  • このメソッドの使用方法は indexOf と同じです。違いは、indexOf() は前から後ろに検索し、lastIndexOf() は後ろから前に検索することです。
  • 検索を開始する場所を指定することもできます
let str = 'hello atguigu';
let result1 = str.lastIndexOf('o');
console.log(result1);//4
let result2 = str.indexOf('a',4)//o

スライス()

  • 指定した文字列から指定した内容を傍受できる
  • ソース文字列は影響を受けませんが、傍受されたコンテンツが返されます
  • パラメータ: first: 開始位置のインデックス (開始位置を含む); second: 終了位置のインデックス (終了位置を除く)
  • 2 番目のパラメーターを省略した場合、後続のすべてのパラメーター
  • パラメータとして負の数を渡すこともできます. 負の場合は後ろから計算されます. -1 は最後のものを除いた最後のものの終わりを意味するので, k はありません.
let str = 'abcdefghijk';
let result = str.slice(1,4)
console.log(result);//bcd
let result1 = str.slice(1)
console.log(result1);//bcdefghijk
let result2 = str.slice(1,-1);
console.log(result2);//bcdefghij

部分文字列()

  • スライスと同様に、文字列を傍受するために使用できます
  • パラメータ: first: インターセプト開始位置のインデックス (開始位置を含む) second: 終了位置のインデックス (終了位置を含まない)
  • spliceとの違いは、このメソッドはパラメータとして負の値を受け付けないことで、負の値が渡された場合はデフォルトで0が使用されます。
  • パラメータの位置は自動的に調整され、2 番目のパラメータが最初のパラメータよりも小さい場合は、位置が自動的に交換されます。
  • str.substring(3,-1)==str.substring(3,0)==str.substring(0,3); だから abc です
let str = 'abcdefghijk';
let result1 = str.substring(0,2);
console.log(result1)//ab
let result2 = str.substring(3,-1);//abc
console.log(result2)

substr()

  • 文字列を傍受するために使用されます
  • パラメータ: 最初のもの: インターセプトの開始位置のインデックス; 2 つ目: インターセプトの長さ
let str = 'abcdefghijk';
let result1 = str.substr(3,2);
console.log(result1)//de

スプリット()

  • 文字列を配列に分割できます
  • パラメーター: パラメーターとして文字列が必要であり、配列は文字列に従って分割されます
  • 空の文字列がパラメータとして渡された場合、配列は文字列に従って分割されます
let str = 'abc,def,ghi,jk';
let result = str.split(',');
console.log(result[0]);
let str1 = 'abcdefghijk';
let result1 = str1.split('');
console.log(result1);// ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']

toUpperCase()

  • 文字列を大文字に変換して返すことができます
  • 元の変数には影響しません

toLowerCase()

  • 文字列を小文字に変換して返すことができます
  • 元の変数には影響しません

正規表現

正規表現は、一部の文字列のルールを定義するために使用されます。

  • コンピュータは、文字列が規則に適合しているかどうかを正規表現によってチェックし、規則に適合している文字列の内容を抽出できます。

正規表現オブジェクトを作成します。

  • 構文: var variable = new RegExp('regular expression', 'matching pattern');
  • typeof を使用して通常のオブジェクトをチェックし、オブジェクトを返す
  • 一致するパターンは、コンストラクターの 2 番目のパラメーターとして渡すことができます。可能性: i 大文字と小文字を無視する g グローバル マッチ パターン

正規表現方法:

  • テスト();
  • このメソッドを使用して、文字列が正規表現のルールに一致するかどうかを確認します
  • let reg = new RegExp('a') は、文字列に小文字の a が含まれているかどうかを確認するために使用されます。
let reg = new RegExp('a','i');
let str = 'a';
let result = reg.test(str);
console.log(result);//true

リテラルを使用して正規表現を作成する

  • 構文: let 変数 = /正規表現 / 一致するパターン
let reg = /a/i;
let str = 'a';
let result = reg.test(str);
console.log(result);//true

文字列に a または b があるかどうかを確認する正規表現を作成します。またはを意味するために | を使用します。

let reg = /a|b/;
console.log(reg.test('bcd'))//true

文字列に文字が含まれているかどうかを確認する正規表現を作成します。[] の内容は、[ab]==a|b の or 関係でもあります。[az] 任意の小文字; [AZ] 任意の大文字; [Az] 任意の文字

let reg = /[a-z]/;
console.log(reg.test('bcd'))//true

文字列に abc、adc、または aec が含まれているかどうかを確認する正規表現を作成する

let reg = /a[bde]c/;
console.log(reg.test('aec'))//true

[^ ] を除く; [^ab] ab を除く; [^0-9] 数字を除く

文字列と正規表現

スプリット()

  • 文字列を配列に分割できます
  • メソッドは正規表現をパラメーターとして渡すことができるため、メソッドは正規表現に従って文字列を分割します
  • このメソッドは時間内のグローバル マッチを指定せず、すべてを分割します。

要件: 任意の文字に基づいて文字列分割を作成する

let str = '1a2b3c4d5e6f7g8h9i';
let result = str.split(/[A-z]/)
console.log(result);//['1', '2', '3', '4', '5', '6', '7', '8', '9', '']

検索()

  • 検索文字列に指定した内容が含まれているかどうか
  • 指定されたコンテンツが見つかった場合は最初に見つかったインデックスが返され、そうでない場合は -1 が返されます。
  • 正規表現をパラメーターとして受け入れ、正規表現に従って文字列を取得できます
  • 最初の 1 つだけが見つかり、グローバル マッチングが設定されていても機能しません

要件: 検索文字列に abc が含まれているかどうか

let str = 'hello abc hello abc';
let result1 = str.search('abc');
console.log(result1)//6
let result2 = str.search('abcd');
console.log(result2)//-1

要件: 検索文字列に abc または aec または afc が含まれているかどうか

let str = 'hello abc hello aec afc';
let result1 = str.search(/a[bef]c/);
console.log(result1)//6

マッチ()

  • 正規表現によると、修飾されたコンテンツは文字列から抽出できます
  • デフォルトでは、一致は要件を満たす最初のコンテンツのみを検出し、検出後に検索を停止します. すべてのコンテンツが一致するように、正規表現をグローバル一致モードとして設定できます.
  • 正規表現は複数指定可能、順序は問いません /[Az]/ig == /[Az]/gi
  • match() は、一致したコンテンツを配列にカプセル化し、結果が 1 つしかクエリされていない場合でもそれを返します。

要件: 文字列内のすべての文字を検索する

let str = '1a2b3c4d5e6f7g8h9i';
let result = str.match(/[A-z]/g);
let result2 = str.match(/[A-z]/ig);//即全局匹配又忽略大小写
console.log(result);//['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']

交換()

  • 文字列内の指定されたコンテンツを新しいコンテンツに置き換えることができます
  • パラメータ: 1 置き換えられるコンテンツ、パラメータとして正規表現を受け入れることができます 2 新しいコンテンツ
  • デフォルトでは最初の
let str = '1a2a3a4a5e6f7A8B9C';
let result1 = str.replace('a','@_@');
console.log(result1);//1@_@2a3a4a5e6f7A8B9C
let result2 = str.replace(/[a-z]/gi,'@_@');
console.log(result2);//1@_@2@_@3@_@4@_@5@_@6@_@7@_@8@_@9@_@
let result3 = str.replace(/[a-z]/gi,'');
console.log(result3);//123456789

正規表現の構文

数量詞:

  • 量指定子を使用して、コンテンツの出現回数を設定できます
  • {n} はちょうど n 回発生します
  • 量指定子は、その前のコンテンツでのみ機能します /(ab{3})/: abbb を探します。連続する ababab を見つけたい場合は、/(ab){3}/
  • /ab{1,3}c/ は、abc、abbc、abbbc を検索することを意味します。b が 1 ~ 3 回出現する
  • /ab{3,}c/ は、b が 3 回以上出現する可能性があることを意味します
  • {m,n} が mn 回出現
  • {m,} が m 回以上出現
  • + 少なくとも 1 つ、{1,} に相当
  • ※0以上、{0,}相当
  • ? 0 または 1、{0,1} に相当
  • ^ は始まりを示します
  • $ は終了を意味します
  • . は任意の文字を表します
  • \ は正規表現でエスケープ文字として使用します。. は . を意味し、\ は \ を意味します。

要件: aaa が文字列に含まれているかどうかを確認する正規表現を作成する (/aaa/ == /a{3}/)

let reg = /aaa/;
console.log(reg.test('aaabs'))//true
let reg1 = /a{3}/;
console.log(reg1.test('aaabs'))//true

要件: 文字列が

let reg = /^a/ //匹配开头的a
let reg1 = /a$/ //匹配结尾的a
let reg2 = /^a$/ //只能有一个a
let reg3 = /^|a$/ //以a开头或者以a结尾
console.log(reg.test('abc'))//true
console.log(reg1.test('abc'))//false
console.log(reg2.test('abc'))//false

要件: 文字列が正当な携帯電話番号かどうかを確認する正規表現を作成します。携帯電話番号のルール: 11 桁、1 桁目は 1、2 桁目は 3 ~ 9 の任意の数字、3 桁以降は 9

let phoneStr = '13454563656';
let phoneReg = /^1[3-9][0-9]{9}$/
console.log(phoneReg.test(phoneStr));//true

要件: 文字列に が含まれているかどうかを確認してください。

let reg =/./;
let reg1 = /\./;
console.log(reg.test('s'))//true
console.log(reg1.test('s'))//false

要件: 文字列に \ が含まれているかどうかを確認します

let reg1 = /\\/;
console.log(reg1.test('s\\'))//true

おすすめ

転載: blog.csdn.net/weixin_48242257/article/details/121147092