ホームページ ウェブフロントエンド jsチュートリアル よく使用される正規表現の例をいくつか共有します

よく使用される正規表現の例をいくつか共有します

Jun 28, 2017 am 10:59 AM
一般 要約する 表現

よく使われる正規表現のまとめ

正規表現、正規表現とも呼ばれる正規表現。 (英語: Regular Expression、コード内では regex、regexp、または RE と略されることがよくあります)、コンピューター サイエンスの概念。正規表現は、単一の文字列を使用して、特定の構文ルールに一致する一連の単語を記述および照合します。多くのテキスト エディタでは、特定のパターンに一致するテキストを取得および置換するために正規表現がよく使用されます。

正規表現、私のように何回も習ったけどまだ混乱している人はいませんか?そうですね、実は私はまだ十分に練習ができていません。いわゆる過去を振り返り、新しいことを学ぶことができます。今日はこの自慢の正規表現を復習しましょう。

正規表現が必要なのはなぜですか?実際、それはコンピュータが愚かだからです(これは私が言ったことではありません)たとえば、123456@qq.com は、私たちが見ると電子メールアドレスですが、コンピュータはそれを認識しないので、私たちはそれを持っています。コンピュータが理解できるいくつかの言語を使用してルールを作成し、このルールに適合するものをメールボックスに伝えることで、コンピュータは対応するものを見つけるのに役立ちます。したがって、通常のルールは、ログインの検証、指定されたものの検索など、必要な一部の操作を完了するためのルールを設定するために使用されます。あまりにも多くを言うのは冗長なので、直接トピックに進みましょう。

規則性を定義します:


1 var re = new RegExp("a"); //RegExp オブジェクト。パラメータは、作成したいルールです。この方法を使用しなければならない状況があります。これについては後述します。

2 var re = /a/; // パフォーマンスを向上させるために、省略メソッドを使用することをお勧めします。空にすることはできません。

1 test(): 文字列内の一致を検索します。通常のコンテンツは、見つかった場合は true を返し、それ以外の場合は false を返します。

使用法: Regular.test (string)

例: 数値であるかどうかを判断します


var str = '374829348791';

var re = /D/; // D は非数字を表します

if( re.test(str) ){ // 文字列内に非数字が見つかったことを意味します。

alert('すべての数字ではありません');

}else{

alert('すべての数字');

}

正規表現にはさまざまな意味を表す記号がたくさんあります。上記の D や以下のようなさまざまなルールを定義できます:

s: スペース

S: 非スペース

d: 数字

D: 非数字

w: 文字 (文字、数字、 underscore_ )

W: 文字以外の例: 数字ではない文字はありますか? (以下は例に基づいてよく使用される文字について説明し、最後にまとめます。)

2 search(): 文字列内で検索通常のルールに準拠するコンテンツの場合は、その出現位置を返します (0 から始まり、複数の文字が一致した場合は最初の文字の位置のみが返されます)。検索が失敗した場合は -1 が返されます。

使用法: 文字 String.search(正規)

文字列内の複合正規表現の内容を検索します。大文字と小文字を無視: i——ignore (通常はデフォルトで大文字と小文字が区別されます。大文字と小文字が区別されない場合は、通常の最後に識別子 i を追加します)

例: 文字列内で文字 b を検索すると、次のようになります。大文字と小文字は区別されません

var str = 'abcdef';

var re = /B/i;

//var re = new RegExp('B','i'); と書くこともできます。このように

alert( str .search(re) ); // 1

3 match() は文字列内の複合ルールの内容を検索します。検索が成功すると、その内容が返されます。配列の形式。失敗した場合は null が返されます。

使用法: String.match (正規)

量指定子: + 少なくとも 1 つの一致が不確実な回数発生します (一致とは検索を意味します)

グローバル一致: g——global (正規のデフォルト、複合物が検索ルールの内容で検索が終了します)

例: 指定された形式ですべての数値を検索し、次のように 123、54、33、879 を検索します

var str = 'haj123sdk54hask33dkhalsd879';

var re = /d+/ g; // 毎回少なくとも 1 つの数値を照合し、グローバルに照合しない場合は、数値 123 が見つかった時点で停止します。グローバル マッチングでは、最初から最後までルールに一致するものが検索され、123 のみが表示されます。プラス記号がない場合、一致結果は 1、2、3、5、4、3、3、879 になります。これは、プラス記号を使用すると、毎回少なくとも 1 つの一致する数字が存在することになります。

alert( str.match(re) ); // [123, 54, 33, 879]


4 replace(): 通常のパターンに一致する文字列を検索して置換します対応する文字列 String を使用します。置き換えたコンテンツを元に戻します。

使用法: String.replace (通常の新しい文字列/コールバック関数) (コールバック関数では、最初のパラメーターは毎回正常に一致する文字を参照します)

|: または を意味します。

例子:敏感词过滤,比如 我爱北京天安门,天安门上太阳升。------我爱*****,****上太阳升。即北京和天安门变成*号,

一开始我们可能会想到这样的方法:


var str = "我爱北京天安门,天安门上太阳升。";

var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配

var str2 = str.replace(re,'*');

alert(str2) //我爱**,*上太阳升

//这种只是把找到的变成了一个*,并不能几个字就对应几个*。

   

要想实现几个字对应几个*,我们可以用回调函数实现:


var str = "我爱北京天安门,天安门上太阳升。";

var re = /北京|天安门/g; // 找到北京 或者天安门 全局匹配

var str2 = str.replace(re,function(str){

alert(str); //用来测试:函数的第一个参数代表每次搜索到的符合正则的字符,所以第一次str指的是北京 第二次str是天安门 第三次str是天安门

var result = '';

for(var i=0;i

result += '*';

}

return result; //所以搜索到了几个字就返回几个*

});

alert(str2) //我爱*****,***上太阳升

//整个过程就是,找到北京,替换成了两个*,找到天安门替换成了3个*,找到天安门替换成3个*。

replace是一个很有用的方法,经常会用到。

正则中的字符

():,小括号,叫做分组符。就相当于数学里面的括号。如下:


var str = '2013-6-7';

var re1 = /\d-+/g; // 全局匹配数字,横杠,横杠数量至少为1,匹配结果为: 3- 6-

var re1 = /(\d-)+/g; // 全局匹配数字,横杠,数字和横杠整体数量至少为1 3-6-

var re2 = /(\d+)(-)/g; // 全局匹配至少一个数字,匹配一个横杠 匹配结果:2013- 6-

同时,正则中的每一个带小括号的项,都叫做这个正则的子项。子项在某些时候非常的有用,比如我们来看一个栗子。

例子:让2013-6-7 变成 2013.6.7


var str = '2013-6-7';

var re = /(\d+)(-)/g;

str = str.replace(re,function($0,$1,$2){

//replace()中如果有子项, //第一个参数:$0(匹配成功后的整体结果 2013- 6-),

// 第二个参数 : $1(匹配成功的第一个分组,这里指的是\d 2013, 6)

//第三个参数 : $1(匹配成功的第二个分组,这里指的是- - - )

return $1 + '.'; //分别返回2013. 6.

});

alert( str ); //2013.6.7

//整个过程就是利用子项把2013- 6- 分别替换成了2013. 6. 最终弹出2013.6.7

match方法也会返回自己的子项,如下:


var str = 'abc';

var re = /(a)(b)(c)/;

alert( str.match(re) ); //[abc,a,b,c]( 返回的是匹配结果 以及每个子项 当match不加g的时候才可以获取到子项的集合)

[] : 表示某个集合中的任意一个,比如 [abc] 整体代表一个字符 匹配 a b c 中的任意一个,也可以是范围,[0-9] 范围必须从小到大 。

[^a] 整体代表一个字符 :^写在[]里面的话,就代表排除的意思

例子:匹配HTML标签 比如

hahahah
找出标签

var re = /<[^>]+>/g; // 左括弧の間にある少なくとも 1 つの右括弧以外のコンテンツと一致します (タグ内に属性などがあるため)。右括弧に一致します var re = /<[wW]+>/g // 左括弧の中央にある少なくとも 1 つの文字または文字以外のコンテンツと一致し、次に右括弧に一致します // 実際には、これは、左括弧を見つけることです。その後、中央に少なくとも 1 つのコンテンツが存在する可能性があります。右括弧が見つかった場合、それはラベルを意味します。 : 任意の文字

: 実数点

b : 独立部分 (開始、終了、スペース)

B : 非独立部分

最後の 2 つを見てみましょう:

var str = 'onetwo';

var str2 = "one two";

var re = /oneb/; // e はその後独立している必要があり、開始、スペース、または終了にすることができます

alert( re. test (str) ); //false

alert( re.test(str2) );//true


例: クラス名を使用してノードを取得する関数を作成します:

これの前に関数:

function getByClass(parent,classname){

if(parent.getElementsByClassName){

returnparent.getElementsByClassName(classname);

}

else{

var results = new Array ();//クラス box

var elems =parent.getElementsByTagName("*");


for(var i =0;i

で取得したすべての要素を格納するために使用されますif(elems[i].className==classname){

results.push(elems[i]);

}

}

return results;

}

}

実際たとえば、タグ内に 2 つのクラスがある場合、または

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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)

Linux システムでの system() 関数の使用法の概要 Linux システムでの system() 関数の使用法の概要 Feb 23, 2024 pm 06:45 PM

Linux での system() 関数の概要 Linux システムでは、system() 関数は非常に一般的に使用される関数であり、コマンド ライン コマンドの実行に使用できます。この記事では、system() 関数を詳細に紹介し、いくつかの具体的なコード例を示します。 1. system() 関数の基本的な使用法 system() 関数の宣言は次のとおりです: intsystem(constchar*command); コマンド パラメーターは文字です。

PHP プログラミングにおける一般的なテンプレート エンジンは何ですか? PHP プログラミングにおける一般的なテンプレート エンジンは何ですか? Jun 12, 2023 am 09:50 AM

近年、PHP プログラミングのテンプレート エンジンは PHP 開発の重要な部分となっており、プログラマーによるページの開発と管理が容易になりました。この記事では、PHP プログラミングにおける一般的なテンプレート エンジンを紹介します。 SmartySmarty は一般的に使用される PHP テンプレート エンジンで、キャッシュされたテンプレート、プラグイン モジュール、カスタム関数などの一連の機能をサポートしています。 Smarty の構文は非常に柔軟で、PHP 変数と HTML タグを組み合わせる問題を解決できるため、PHP 言語はテンプレート化されたデザインにより適しています。しかも、Sさん

H5 開発における位置属性の一般的な適用シナリオ H5 開発における位置属性の一般的な適用シナリオ Dec 27, 2023 am 10:08 AM

H5 開発における位置属性の一般的な適用シナリオには、特定のコード例が必要です。H5 開発では、CSS の位​​置属性は非常に重要であり、Web ページ内の要素の位置を制御します。 Position 属性を適切に適用することで、ページ レイアウトの柔軟性と美しさを実現できます。この記事では、position 属性の一般的なアプリケーション シナリオを紹介し、具体的なコード例で説明します。静的 (静的位置決め): 位置属性のデフォルト値は st です。

Python 式の構文エラーを解決するにはどうすればよいですか? Python 式の構文エラーを解決するにはどうすればよいですか? Jun 24, 2023 pm 05:04 PM

Python は高レベルのプログラミング言語であり、学習と使用が簡単です。 Python プログラムを作成する必要があると、必然的に構文エラーに遭遇することになります。式の構文エラーはよくあるエラーです。この記事では、Python で式の構文エラーを解決する方法について説明します。式の構文エラーは Python で最も一般的なエラーの 1 つであり、通常は構文の間違った使用法や必要なコンポーネントの欠落によって発生します。 Python では、式は通常、数値、文字列、変数、演算子で構成されます。ごくありふれた

一般的な Ajax コントロールは何ですか?その特徴と機能の詳細をご覧ください 一般的な Ajax コントロールは何ですか?その特徴と機能の詳細をご覧ください Jan 17, 2024 am 11:11 AM

Ajax コントロールの深い理解: 一般的なものは何ですか?はじめに: 最新の Web 開発では、Web ページの部分的な更新を実現し、ユーザー エクスペリエンスを向上できる Ajax (非同期 JavaScript および XML) が一般的なテクノロジになっています。開発では、通常、開発プロセスを簡素化し、スピードアップするために Ajax コントロールを使用します。この記事では、Ajax コントロールについて詳しく説明し、いくつかの一般的なコントロールとその機能を紹介します。 1. jQueryAjax: jQueryA

PHP プログラミングで一般的なスーパー グローバル変数は何ですか? PHP プログラミングで一般的なスーパー グローバル変数は何ですか? Jun 12, 2023 am 09:31 AM

スーパー グローバル変数は PHP の非常に重要な概念であり、関数やその他の変数を渡すメソッドを使用せずに、プログラム内のどこからでも変数値にアクセスできます。この記事では、PHP プログラミングで一般的に使用されるいくつかのスーパー グローバル変数について説明します。 $_GET$_GET は、HTML フォームによって送信されたデータを収集するために使用されるスーパー グローバル変数の 1 つです。 $_GET を通じて、指定された URL のクエリ文字列パラメータを取得できます。これらのパラメータは、ページ上のデータ フィルタリングやデータ クエリなどの操作に使用できます。たとえば、次のようなとき

C および C++ では、式またはステートメントを区切るためにカンマが使用されます。 C および C++ では、式またはステートメントを区切るためにカンマが使用されます。 Sep 09, 2023 pm 05:33 PM

C または C++ では、カンマ「,」はさまざまな用途に使用されます。ここではそれらの使用方法を学びます。演算子としてのカンマ。カンマ演算子は、最初のオペランドを評価して結果を破棄し、次に 2 番目のオペランドを評価して値を返す二項演算子です。カンマ演算子は、C または C++ では優先順位が最も低くなります。例 #include<stdio.h>intmain(){ intx=(50,60); inty=(func1(),func2());} ここでは、x に 60 が代入されます。次のステートメントでは、 func1( が最初に実行されます

Git ワークフロー管理エクスペリエンスの概要 Git ワークフロー管理エクスペリエンスの概要 Nov 03, 2023 pm 06:45 PM

Git ワークフロー管理の経験の概要 はじめに: ソフトウェア開発において、バージョン管理は非常に重要なリンクです。現在最も人気のあるバージョン管理ツールの 1 つである Git の強力なブランチ管理機能により、チームのコラボレーションがより効率的かつ柔軟になります。この記事では、Git ワークフロー管理の経験を要約して共有します。 1. Git ワークフローの紹介 Git はさまざまなワークフローをサポートしており、チームの実情に応じて適切なワークフローを選択できます。一般的な Git ワークフローには、集中型ワークフロー、機能ブランチ ワークフロー、GitF が含まれます

See all articles