ホームページ 見出し 正規表現の基本文法の関連アプリケーションの深い理解 (コレクション)

正規表現の基本文法の関連アプリケーションの深い理解 (コレクション)

Aug 11, 2017 am 11:32 AM
基本 通常 表現

1. 正規表現の基本構文

2 つの特殊記号「^」と「$」。それらの機能は、それぞれ文字列の始まりと終わりを示すことです。例は次のとおりです。

"^The":表示所有以"The"开始的字符串("There","The cat"等);
"of despair$":表示所以以"of despair"结尾的字符串;
"^abc$":表示开始和结尾都是"abc"的字符串——呵呵,只有"abc"自己了;
"notice":表示任何包含"notice"的字符串。
ログイン後にコピー

最後の例と同様に、2 つの特殊文字を使用しない場合は、検索する文字列が検索対象の文字列の一部であることを示しています。位置を指定しているわけではありません。トップ。

他の記号には「*」、「+」、「?」があり、これらは 1 つの文字または一連の文字が繰り返し現れる回数を表します。それらはそれぞれ、「なしまたはそれ以上」、「1 回またはそれ以上」、および「なしまたは 1 回」を意味します。以下にいくつかの例を示します:

"ab*":表示一个字符串有一个a后面跟着零个或若干个b。("a", "ab", "abbb",……);
"ab+":表示一个字符串有一个a后面跟着至少一个b或者更多;
"ab?":表示一个字符串有一个a后面跟着零个或者一个b;
"a?b+$":表示在字符串的末尾有零个或一个a跟着一个或几个b。
ログイン後にコピー

中括弧で囲まれた範囲を使用して、繰り返しの範囲を示すこともできます。

"ab{2}":表示一个字符串有一个a跟着2个b("abb");
"ab{2,}":表示一个字符串有一个a跟着至少2个b;
"ab{3,5}":表示一个字符串有一个a跟着3到5个b。
ログイン後にコピー

範囲の下限を指定する必要があることに注意してください (例: "{,2}" の代わりに "{0,2}")。また、「*」、「+」、「?」が「{0,}」、「{1,}」、「{0,1}」と同等であることに気づいたかもしれません。

「or」演算を意味する「|」もあります:

"hi¦hello":表示一个字符串里有"hi"或者"hello";
"(b¦cd)ef":表示"bef"或"cdef";
"(a¦b)*c":表示一串"a""b"混合的字符串后面跟一个"c";
'.'可以替代任何字符:
"a.[0-9]":表示一个字符串有一个"a"后面跟着一个任意字符和一个数字;
"^.{3}$":表示有任意三个字符的字符串(长度为3个字符);
ログイン後にコピー

角括弧は、特定の文字が文字列内の特定の位置に出現できることを示します:

"[ab]":表示一个字符串有一个"a"或"b"(相当于"a¦b");
"[a-d]":表示一个字符串包含小写的'a'到'd'中的一个(相当于"a¦b¦c¦d"或者"[abcd]");
"^[a-zA-Z]":表示一个以字母开头的字符串;
"[0-9]%":表示一个百分号前有一位的数字;
",[a-zA-Z0-9]$":表示一个字符串以一个逗号后面跟着一个字母或数字结束。
ログイン後にコピー

角括弧内で '^ を使用することもできます' は望ましくない文字を表します。'^' は角括弧内の最初の文字にする必要があります。 (例: "%[^a-zA-Z]%" は、2 つのパーセント記号の間に文字を含めないことを意味します)。

これをそのまま表現するには、これらの文字「^.$()|*+?{」の前にシフト文字 '' を追加する必要があります。

角括弧内ではエスケープ文字は必要ないことに注意してください。

2. 正規表現の検証は、テキストボックスの入力文字の種類を制御します

1. 数字と英語のみを入力できます:

<input onkeyup="value=value.replace(/[\W]/g,&#39;&#39;) " onbeforepaste="clipboardData.setData(&#39;text&#39;,clipboardData.getData(&#39;text&#39;).replace(/[^\d]/g,&#39;&#39;))" 
ID="Text1" NAME="Text1">
ログイン後にコピー

2. 数字のみを入力できます:

<input onkeyup="value=value.replace(/[^\d]/g,&#39;&#39;) " onbeforepaste="clipboardData.setData(&#39;text&#39;,clipboardData.getData(&#39;text&#39;).replace(/[^\d]/g,&#39;&#39;))" 
ID="Text2" NAME="Text2">
ログイン後にコピー

3. 全角文字のみ入力可能:

<input onkeyup="value=value.replace(/[^\uFF00-\uFFFF]/g,&#39;&#39;)" onbeforepaste="clipboardData.setData(&#39;text&#39;,clipboardData.getData(&#39;text&#39;)
.replace(/[^\uFF00-\uFFFF]/g,&#39;&#39;))" ID="Text3" NAME="Text3">
ログイン後にコピー

4. 漢字のみ入力可能:

<input onkeyup="value=value.replace(/[^\u4E00-\u9FA5]/g,&#39;&#39;)" onbeforepaste="clipboardData.setData(&#39;text&#39;,clipboardData.getData(&#39;text&#39;)
.replace(/[^\u4E00-\u9FA5]/g,&#39;&#39;))" ID="Text4" NAME="Text4">
ログイン後にコピー

3. よくある正規表現の応用例の説明

//校验是否全由数字组成
/^[0-9]{1,20}$/
^ 表示打头的字符要匹配紧跟^后面的规则
$ 表示打头的字符要匹配紧靠$前面的规则
[ ] 中的内容是可选字符集
[0-9] 表示要求字符范围在0-9之间
{1,20}表示数字字符串长度合法为1到20,即为[0-9]中的字符出现次数的范围是1到20次。/^ 和 $/成对使用应该是表示要求整个字符串完全匹配定义的规则,而不是只匹配字符串中的一个子串。
//校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串
/^[a-zA-Z]{1}([a-zA-Z0-9]|[._]){4,19}$/
^[a-zA-Z]{1} 表示第一个字符要求是字母。
([a-zA-Z0-9]|[._]){4,19} 表示从第二位开始(因为它紧跟在上个表达式后面)的一个长度为4到9位的字符串,它要求是由大小写字母、数字或者特殊字符集[._]组成。
//校验用户姓名:只能输入1-30个以字母开头的字串
/^[a-zA-Z]{1,30}$/
//校验密码:只能输入6-20个字母、数字、下划线
/^(\w){6,20}$/
\w:用于匹配字母,数字或下划线字符 //校验普通电话、传真号码:可以“+”或数字开头,可含有“-” 和 “ ”
/^[+]{0,1}(\d){1,3}[ ]?([-]?((\d)|[ ]){1,12})+$/
\d:用于匹配从0到9的数字;
“?”元字符规定其前导对象必须在目标对象中连续出现零次或一次
可以匹配的字符串如:+123 -999 999 ; +123-999 999 ;123 999 999 ;+123 999999等
//校验URL
/^http[s]{0,1}:\/\/.+$/ 或 /^http[s]{0,1}:\/\/.{1,n}$/ (表示url串的长度为length(“https://”) + n )
\ / :表示字符“/”。
. 表示所有字符的集
+ 等同于{1,},就是1到正无穷吧。
ログイン後にコピー

4.正規表現アプリケーション(共通部分)

"^\d+$"  //非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$"  //正整数
"^((-\d+)|(0+))$"  //非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$"  //负整数
"^-?\d+$"    //整数
"^\d+(\.\d+)?$"  //非负浮点数(正浮点数 + 0)
"^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$"  //正浮点数
"^((-\d+(\.\d+)?)|(0+(\.0+)?))$"  //非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"  //负浮点数
"^(-?\d+)(\.\d+)?$"  //浮点数
"^[A-Za-z]+$"  //由26个英文字母组成的字符串
"^[A-Z]+$"  //由26个英文字母的大写组成的字符串
"^[a-z]+$"  //由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$"  //由数字和26个英文字母组成的字符串
"^\w+$"  //由数字、26个英文字母或者下划线组成的字符串
"^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$"    //email地址
"^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$"  //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年
"^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$"   //Emil
"(d+-)?(d{4}-?d{7}|d{3}-?d{8}|^d{7,8})(-d+)?"     //电话号码
"^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$"   //IP地址
^([0-9A-F]{2})(-[0-9A-F]{2}){5}$   //MAC地址的正则表达式
^[-+]?\d+(\.\d+)?$  //值类型正则表达式
ログイン後にコピー
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、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 24, 2023 pm 02:57 PM

PHP 正規表現は、テキストの処理と変換のための強力なツールです。テキスト コンテンツを解析し、特定のパターンに従って置換またはインターセプトすることで、テキスト情報を効果的に管理できます。その中でも、正規表現の一般的な応用例は、特定の文字で始まる文字列を置換することです。

Golang 正規表現を使用して複数の単語または文字列を照合するにはどうすればよいですか? Golang 正規表現を使用して複数の単語または文字列を照合するにはどうすればよいですか? May 31, 2024 am 10:32 AM

Golang の正規表現では、パイプ文字 | を使用して複数の単語または文字列を一致させ、各オプションを論理 OR 式として区切ります。例: 「fox」または「dog」に一致します: fox|dog は「quick」、「brown」または「lazy」に一致します: (quick|brown|lazy) 「Go」、「Python」または「Java」に一致します: Go| Python |Java は単語または 4 桁の郵便番号と一致します: ([a-zA

正規表現を使用してPHPで漢字を削除する方法 正規表現を使用してPHPで漢字を削除する方法 Mar 03, 2023 am 10:12 AM

正規表現を使用して PHP で中国語を削除する方法: 1. PHP サンプル ファイルを作成する; 2. 中国語と英語を含む文字列を定義する; 3. "preg_replace('/([\x80-\xff]*)/i', '',$a);" 通常の方法では、クエリ結果から中国語の文字を削除できます。

通常のマッチングを使用してphpでhtmlタグを削除する方法 通常のマッチングを使用してphpでhtmlタグを削除する方法 Mar 21, 2023 pm 05:17 PM

この記事では、PHP 正規表現を使用して HTML タグを削除し、HTML 文字列からプレーン テキスト コンテンツを抽出する方法を学びます。 HTML タグを削除する方法を示すために、まず HTML タグを含む文字列を定義しましょう。

CSS セレクターを使用する基本的な構文を学習します。 CSS セレクターを使用する基本的な構文を学習します。 Jan 13, 2024 am 11:44 AM

基本的な CSS セレクター構文をマスターするには、特定のコード例が必要です。CSS セレクターは、フロントエンド開発の非常に重要な部分です。CSS セレクターは、HTML ドキュメントのさまざまな要素を選択および変更するために使用できます。基本的な CSS セレクター構文をマスターすることは、効率的なスタイルシートを作成するために重要です。この記事では、いくつかの一般的な CSS セレクターと対応するコード例を紹介します。要素セレクター 要素セレクターは、タグ名によって対応する要素を選択できる最も基本的なセレクターです。たとえば、すべての段落 (p 要素) を選択するには、次のようにします。

PHP 正規表現を使用して中国語置換関数を実装するためのヒントを共有する PHP 正規表現を使用して中国語置換関数を実装するためのヒントを共有する Mar 24, 2024 pm 05:57 PM

PHP 正規表現を使用して中国語の置換機能を実装するためのヒントを共有する Web 開発では、中国語のコンテンツを置換する必要がある状況によく遭遇します。人気のサーバーサイド スクリプト言語として、PHP は中国語の置換を簡単に実現できる強力な正規表現機能を提供します。この記事では、正規表現を使用して PHP で中国語置換を実装するためのテクニックをいくつか紹介し、具体的なコード例を示します。 1. preg_replace 関数を使用して中国語置換を実装します PHP の preg_replace 関数を使用できます

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

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

PHP 正規表現を使用して URL が HTTPS プロトコルであるかどうかを確認する方法 PHP 正規表現を使用して URL が HTTPS プロトコルであるかどうかを確認する方法 Jun 24, 2023 am 08:16 AM

Web サイトのセキュリティはますます注目を集めており、HTTPS プロトコルを使用してデータ送信のセキュリティを確保することが、現在の Web サイト開発の重要な部分となっています。 PHP 開発において、正規表現を使用して URL が HTTPS プロトコルであるかどうかを確認するにはどうすればよいですか?ここで私たちはそれを知りに来ました。正規表現 正規表現は、ルールを記述するために使用される表現です。テキストを処理するための強力なツールであり、テキストの一致、検索、置換に広く使用されています。 PHP 開発では、正規表現を使用して URL 内の http と一致させることができます。