JS基本シリーズの正規表現

Feb 20, 2017 pm 02:09 PM

正規表現は非常に強力なものです。今日は JS を初めて使用する人向けに簡単に紹介します。議論の余地がある点があれば、メッセージを残してください。

JS基本シリーズの正規表現

1.1 正規表現とは

正規表現は、文字パターンを記述するオブジェクトであり、String と RegExp の両方で正規表現の使用を定義します。強力なパターン マッチング、テキスト検索と置換。

正規表現は、文字列のパターンを照合し、それらを取得および置換するために使用されます。正規表現は、文字列のパターン マッチングを実行するための強力なツールです。

1.2 正規表現の役割

正規表現は主にクライアントの入力データを検証するために使用されます。

ユーザーがフォームに入力してボタンをクリックすると、フォームはサーバー側で通常、PHP、ASP.NET、JSP などのサーバー スクリプトを使用してさらに処理されます。クライアント側の検証により、サーバー側のシステム リソースが大幅に節約され、より良いユーザー エクスペリエンスが提供されます。

2. 正規表現を作成します==(123)==

正規表現を使用するには、まず正規表現オブジェクトを作成する必要があります:

2.1 方法 1: Word new created

var patt = new RegExp(pattern,modifiers);
ログイン後にコピー



パラメータ 1: 正規表現パターンを使用します。文字列形式

パラメータ 2: パターン修飾子。グローバル マッチング、大文字と小文字を区別するマッチング、および複数行のマッチングを指定するために使用されます

<script type="text/javascript">
  /*
   创建了一个正则表达式
   参数1:模式是:girl,意思是说可以匹配 "girl"这样的字符串
   参数2:模式修饰符:gi g代表全局匹配 i代表不区分大小写
  */
 var pa = new RegExp("girl", "gi");
  //测试参数中的字符串"你好我的girl" 是否与匹配模式匹配。
  var isExist = pa.test("你好我的girl"); // 在本例中,是匹配的,这个字符串包含girl,所以返回true
  alert(isExist); //true
</script>
ログイン後にコピー



2.2 方法 2: 正規表現の直接数量を使用します

var pa = /pattern/modifiers;
ログイン後にコピー



2 つ/中央の正規表現パターン、最後の /パターン修飾子が続きます

例: 上記の例は次のように記述できます var pa = /girl/gi;

注: 現時点では、パターンとパターン修飾子の両方に二重引用符または一重引用符を追加できます

<script type="text/javascript">
 var pa = /girl/gi;
 alert(pa.test("厉害了我的girl")); //true
</script>
ログイン後にコピー



3. 正規表現のパターン修飾子 ==(126)==

JavaScript には 3 つのパターン修飾子があります: g i u

g: グローバルを意味します。これは、文字列が複数回一致することを意味します。 g が書かれていない場合は一度だけ一致し、一度一致すると再度一致しません

i: 大文字小文字を無視することを示します。これは、マッチングで大文字と小文字が区別されないことを意味します

u: 複数の行がマッチングできることを示します。

4. 正規表現メソッドの詳しい説明==(127)==

よく使われる正規表現メソッドはtest()とexec()です

4.1 test()メソッド

test(String)

パラメータ: 照合する文字列

戻り値: 照合が成功した場合は true、失敗した場合は false を返します

ターゲット文字列が特定のパターンに一致するかどうかだけを知りたいが、そのパターンを知る必要はない場合テキストコンテンツ この場合、この方法を使用すると非常に便利です。したがって、test() メソッドは if ステートメントでよく使用されます。

<script type="text/javascript">
 var pa = /girl/gi;
 if(pa.test("厉害了我的girl")){
  alert("这个女孩和你很配");
 }else {
  alert("你注定没有女孩去匹配");
 }
</script>
ログイン後にコピー



4.2 exec()メソッド

exec(string): このメソッドは、グループをキャプチャするために特別に設計されています

パラメータ: 照合する文字列

戻り値: 配列を返します。一致するものがない場合は、null を返します

戻り値の配列に関する注意:

これは確かに Array のインスタンスです。

ただし、この配列には、index と input という 2 つの追加属性があります

Index: ソース文字列内の一致した文字列のインデックスを表します

input: 一致したソース文字列を表します。

配列の最初の項目はパターン全体に一致する文字列であり、他の項目はパターン内のキャプチャ グループに一致する文字列です

キャプチャ グループがない場合、配列には最初の項目のみが存在します。グループのキャプチャの概念については後ほど説明します

<script type="text/javascript">
 var pa = /girl/gi;
 var testStr = "myGirl, yourgirl, hisgIrl";
 var girls = pa.exec(testStr); //捕获
 alert(girls.length + ":" + (girls instanceof Array)); //正则表达式没有捕获组,所以数组长度为1
 alert(girls[0]); //第一次捕获的是 Girl
  //因为我们是用的全局匹配,所以此次匹配的时候从上次匹后的位置开始继续匹配
 alert(pa.exec(testStr)[0]);  // girl
 alert(pa.exec(testStr)); // gIrl
 alert(pa.exec(testStr)); //继续向后没有匹配的字符串,所以返回null
  // 返回null,如果继续再匹配,则会回到字符串的开始,重写开始匹配。
 alert(pa.exec(testStr)); // Girl
  // ...开启新一轮匹配
</script>
ログイン後にコピー



したがって、一致する文字列をすべて見つけたい場合は、終了条件は一致結果が null であることです

<script type="text/javascript">
 var pa = /girl/gi;
 var testStr = "myGirl, yourgirl, hisgIrl";
 var girls;
 while(girls = pa.exec(testStr)){ //如果等于null,会自动转成 false,结束。
  alert(girls);
 }
</script>
ログイン後にコピー



。グループ。正規表現の()で囲まれたタスクはグループです。グループは入れ子にすることができます。

<script type="text/javascript">
  //()内的内容就是第1组(Girl),其实我们完整真个表达式可以看出第0组 girl(Girl)
  // 将来对应着匹配结果数组的下标。 
 var pa = /girl(Girl)/gi; 
 var test = "girlGirl abdfjla Girlgirl fal girl";
 var girls;
 while(girls = pa.exec(test)){
  //匹配之后,数组的第0个元素对应的这第0组的匹配结果,第1个元素对应着第1组的匹配结果
  for (var i = 0; i < girls.length; i++) {
   console.log(girls[i]);
  }
  console.log("-------------");
 }
</script>
//最终运行结果:
girlGirl
Girl
-------------
Girlgirl
girl
------------
ログイン後にコピー



五、正则表达式规则==(124)==

表达式规则

正则表达式元字符是包含特殊含义的字符。它们有一些特殊功能,可以控制匹配模式的

方式。反斜杠后的元字符将失去其特殊含义。

字符类:单个字符和数字

[0-9A-Za-z]

元字符/元符号 匹配情况

. 匹配除换行符外的任意字符

[a-z0-9] 匹配括号中的字符集中的任意字符

[^a-z0-9] 匹配任意不在括号中的字符集中的字符

\d ==[0-9] 匹配数字

\D ==[^0-9] 匹配非数字,同[^0-9]相同

\w [0-9A-Za-z_] 匹配字母和数字及_

\W 匹配非(字母和数字及_)

字符类:空白字符

元字符/元符号 匹配情况

\0 匹配null 字符

\b 匹配空格字符

\n 匹配换行符

\r 匹配回车字符

\t 匹配制表符

\s 匹配空白字符、空格、制表符和换行符

\S 匹配非空白字符

字符类:锚字符

元字符/元符号 匹配情况

^ 行首匹配

$ 行尾匹配

字符类:重复字符

元字符/元符号 匹配情况

? 例如(x?) 匹配0个或1 个x

* 例如(x*) 匹配0个或任意多个x

+ 例如(x+) 匹配至少一个x

(xyz)+ 匹配至少一个(xyz)

{m,n} 例如x{m,n} n>=次数>=m 匹配最少m个、最多n个x

{n} 匹配前一项n次

{n,} 匹配前一项n次,或者多次

六、常用正则表示==(128)==

1、检查邮政编码

var pattern = /[1-9][0-9]{5}/; //共6位数字,第一位不能为0
var str = &#39;224000&#39;;
alert(pattern.test(str));
ログイン後にコピー



2、检查文件压缩包

var pattern = /[\w]+\.zip|rar|gz/; //\w 表示所有数字和字母加下划线
var str = &#39;123.zip&#39;; //\.表示匹配.,后面是一个选择
alert(pattern.test(str));
ログイン後にコピー



3、删除多余空格

var pattern = /\s/g; //g 必须全局,才能全部匹配
var reg=new RegExp(&#39;\\s+&#39;,&#39;g&#39;);
var str = &#39;111 222 333&#39;;
var result = str.replace(pattern,&#39;&#39;); //把空格匹配成无空格
alert(result);
ログイン後にコピー



4、删除空格

var pattern = /^\s+/; 
var str = &#39; goo gle &#39;;
alert(str+" "+str.length);
var result = str.replace(pattern, &#39;&#39;);
alert(result+" "+result.length);
pattern = /\s+$/; 
result = result.replace(pattern, &#39;&#39;);
alert(result+" "+result.length);
pattern = /\s+/g; 
result = result.replace(pattern, &#39;&#39;);
alert(result+" "+result.length);
5、简单的电子邮件验证
var pattern = /^([a-zA-Z0-9_\.\-]+)@([a-zA-Z0-9_\.\-]+)\.([a-zA-Z]{2,4})$/;
var str = &#39;yc60.com@gmail.com&#39;;
alert(pattern.test(str));
var pattern = /^([\w\.\-]+)@([\w\.\-]+)\.([\w]{2,4})$/;
var str = &#39;yc60.com@gmail.com&#39;;
alert(pattern.test(str));
ログイン後にコピー



七、支持正则表达式的字符串方法



方法描述
search检索与正则表达式相匹配的第一个匹配项的索引。
match找到一个或多个正则表达式的匹配。
replace替换与正则表达式匹配的子串。
split把字符串分割为字符串数组。
<script type="text/javascript">
 var s = "Abc123aBc";
 alert(s.search(/abc/gi)); 
 alert(s.search(/abc/gi)); // 即使设置的全局模式,每次search也是从开始向后查找
 //match方法和正则表达式的exec()方法的作用是一样的,但是match会一次性把所有的匹配放在一个数组中,全部返回
 alert(s.match(/abc/gi)); // Abc,aBc
 alert(s.replace(/[ab]/gi, "x"));   //把a或b替换成x
 var ss = s.split(/[0-9]+/gi); //用1个或多个数字切割。 Abc,aBc
 alert(ss);
</script>
ログイン後にコピー



以上所述是小编给大家介绍的JS基础系列之正则表达式,更多相关内容请关注PHP中文网(www.php.cn)! 


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP 正規表現の検証: 数値形式の検出 PHP 正規表現の検証: 数値形式の検出 Mar 21, 2024 am 09:45 AM

PHP 正規表現の検証: 数値形式の検出 PHP プログラムを作成する場合、ユーザーが入力したデータを検証する必要がよくあります。一般的な検証の 1 つは、データが指定された数値形式に準拠しているかどうかを確認することです。 PHP では、正規表現を使用してこの種の検証を行うことができます。この記事では、PHP 正規表現を使用して数値形式を検証する方法を紹介し、具体的なコード例を示します。まず、一般的な数値形式の検証要件を見てみましょう。 整数: 0 ~ 9 の数字のみが含まれ、プラスまたはマイナス記号で始めることができ、小数点は含まれません。浮動小数点

正規表現を使用して Golang でメールアドレスを検証するにはどうすればよいですか? 正規表現を使用して Golang でメールアドレスを検証するにはどうすればよいですか? May 31, 2024 pm 01:04 PM

正規表現を使用して Golang で電子メール アドレスを検証するには、次の手順に従います。 regexp.MustCompile を使用して、有効な電子メール アドレス形式と一致する正規表現パターンを作成します。 MatchString 関数を使用して、文字列がパターンと一致するかどうかを確認します。このパターンは、次のようなほとんどの有効な電子メール アドレス形式をカバーします。 ローカル ユーザー名には文字、数字、および特殊文字を含めることができます: !.#$%&'*+/=?^_{|}~-` ドメイン名には少なくとも次の文字が含まれている必要があります。 1 文字の後に文字、数字、またはハイフンを続けます。トップレベル ドメイン (TLD) は 63 文字を超えることはできません。

PHP 正規表現: 厳密な一致とあいまいな包含の除外 PHP 正規表現: 厳密な一致とあいまいな包含の除外 Feb 28, 2024 pm 01:03 PM

PHP 正規表現: 完全一致と除外 ファジー包含正規表現は、プログラマがテキストを処理する際に効率的な検索、置換、フィルタリングを実行できる強力なテキスト マッチング ツールです。 PHP では、正規表現は文字列処理やデータ マッチングにも広く使用されています。この記事では、PHP で完全一致を実行し、あいまい包含操作を除外する方法に焦点を当て、具体的なコード例を使用して説明します。完全一致 完全一致とは、バリエーションや余分な単語ではなく、正確な条件を満たす文字列のみと一致することを意味します。

簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 簡単な JavaScript チュートリアル: HTTP ステータス コードを取得する方法 Jan 05, 2024 pm 06:08 PM

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

Go で正規表現を使用してタイムスタンプを照合するにはどうすればよいですか? Go で正規表現を使用してタイムスタンプを照合するにはどうすればよいですか? Jun 02, 2024 am 09:00 AM

Go では、正規表現を使用してタイムスタンプを照合できます。ISO8601 タイムスタンプの照合に使用されるような正規表現文字列をコンパイルします。 ^\d{4}-\d{2}-\d{2}T \d{ 2}:\d{2}:\d{2}(\.\d+)?(Z|[+-][0-9]{2}:[0-9]{2})$ 。 regexp.MatchString 関数を使用して、文字列が正規表現と一致するかどうかを確認します。

JavaScript で HTTP ステータス コードを簡単に取得する方法 JavaScript で HTTP ステータス コードを簡単に取得する方法 Jan 05, 2024 pm 01:37 PM

JavaScript で HTTP ステータス コードを取得する方法の紹介: フロントエンド開発では、バックエンド インターフェイスとの対話を処理する必要があることが多く、HTTP ステータス コードはその非常に重要な部分です。 HTTP ステータス コードを理解して取得すると、インターフェイスから返されたデータをより適切に処理できるようになります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法と、具体的なコード例を紹介します。 1. HTTP ステータス コードとは何ですか? HTTP ステータス コードとは、ブラウザがサーバーへのリクエストを開始したときに、サービスが

Goで正規表現を使用してパスワードを確認するにはどうすればよいですか? Goで正規表現を使用してパスワードを確認するにはどうすればよいですか? Jun 02, 2024 pm 07:31 PM

Go で正規表現を使用してパスワードを検証する方法は次のとおりです。 パスワードの最小要件 (小文字、大文字、数字、特殊文字を含む少なくとも 8 文字) を満たす正規表現パターンを定義します。 regexp パッケージの MustCompile 関数を使用して正規表現パターンをコンパイルします。 MatchString メソッドを使用して、入力文字列が正規表現パターンと一致するかどうかをテストします。

Golangで正規表現を使用してURLを検出するにはどうすればよいですか? Golangで正規表現を使用してURLを検出するにはどうすればよいですか? May 31, 2024 am 10:32 AM

正規表現を使用して Golang で URL を検出する手順は次のとおりです。 regexp.MustCompile(pattern) を使用して正規表現パターンをコンパイルします。パターンは、プロトコル、ホスト名、ポート (オプション)、パス (オプション)、およびクエリ パラメーター (オプション) と一致する必要があります。 regexp.MatchString(pattern,url) を使用して、URL がパターンと一致するかどうかを検出します。

See all articles