まず、2 つの特殊文字「^」と「$」を見てみましょう。これらはそれぞれ、文字列の先頭と末尾を一致させるために使用されます。
「^The」: 「The」文字列で始まる文字と一致します
。 of絶望$":「of絶望」で終わる文字列と一致します。
"^abc$":abcで始まりabcで終わる文字列と一致します。実際には、abcのみが一致します。
"notice":noticeを含む文字列と一致します
。先ほど述べた 2 つの文字 (最後の例) を使用しない場合、チェック対象の文字列のどこにでもパターン (正規表現) を出現させることができ、側面にロックする必要がないことがわかります。
また、「*」、「+」、「?」という文字もあり、それぞれ「0 個以上」、「1 個以上」、「1 個以上」を表します。
"0
または 1。" いくつかの例を示します。
"ab*": a と 0 個以上の b で構成される文字列と一致します ("a"、"ab"、"abbb" など)。
ただし、少なくとも 1 つの b (「ab」、「abbb」など)。
「ab?」: 0 または 1 つの b に一致します。
「a?b+$」: 1 つまたは 0 の後に複数の b を追加します。 b で終わる文字列は、
"ab{2}"のように、中括弧内に表示される文字の数を制限することもできます
。 a の後に 2 つの b が続く ("abb ")
; ": 少なくとも 2 つの b("abb"、"abbbb" など);
"ab{3,5}": 2-5 b("abbb"、"abbbb "、または
"abbbbb")。
常に指定する必要があることに注意してください (つまり、「{,2}」ではなく、「{0,2}」) は、「*」、「+」、および「?」と同じであることに注意してください。 3 つの範囲注釈、それぞれ「{0,}」、「{1,}」、および「{0,1}」が続きます。
ここで、特定の数の文字を括弧で囲みます。たとえば、
「a(bc)*」: a の後に 0 または 1 つの「bc」が続くものと一致します。
「a(bc){1,5}」: 1 ~ 5 の「bc」。 "
には文字 '│' も含まれており、これは OR 演算と同等です。
"hi│hello": "hi" または "hello" を含む文字列と一致します。
"(b|cd)ef": "bef" を含む文字列と一致します。または、"cdef"; "(a│b)*c" の文字列
: 複数の (0 を含む) a または b とその後に続く c 文字列を含む文字列と一致します。
ドット ('.' ) はすべての単一文字を表すことができます。
"a.[0-9]": a の後に文字が続き、その後に数字が続きます (このような文字列を含む文字列が一致し、この括弧は将来省略されます)
"^.{ 3}$": 終了3 文字の場合、角括弧で囲まれた内容は 1 つの文字にのみ一致します。
"[ab]": 1 つの a または b ("a│b" と同じ)
: ' の 1 つの文字に一致します。 a' から 'd' ("a│b|c|d" および "[abcd]" と同じ効果);
"^[a-zA-Z]": 文字列
"[0-9
" で始まる文字と一致します。]%": x% を含む文字列と一致します
。 "[a-zA-Z0-9]$": カンマで終わり、その後に数字または文字が続く文字列と一致します。
不要な文字を角かっこで囲むこともできます。
必要なのは
、括弧の先頭として '^' を使用することだけです (つまり、"%[^a-zA-Z]%" は、文字以外の文字列を含む 2 つのパーセント記号と一致します)。
解釈しますが、特別な意味を持つ文字として「^.[$()│*+?{」を使用する場合は、これらの文字の前に '' を追加する必要があり、php3 の先頭に を使用することは避けるべきです。たとえば、正規表現 "($│?[0-9]+" は ereg("( \$│?[0-9 ]+", $str) と呼ぶ必要があります (私はそうしません)。 php4 でも同じかどうかを確認してください)
角括弧内の文字はこの規則の例外であることを忘れないでください。角括弧内では、('') を含むすべての特殊文字はその特殊なプロパティを失います (つまり、"[* +?{}.]" は、これらの文字を含む文字列に一致します)。また、regx マニュアルに記載されているように、「リストに ']' が含まれる場合、リストの最初の文字として使用するのが最善です。 「-」が含まれる場合は、範囲の先頭または末尾、または 2 番目の終点に配置することをお勧めします (例: [ad-0-9] の「-」)。
完全を期すために、照合順序、文字クラス、および等価クラスについては説明しません。これらについては、「」で説明する必要はありません
。
詳細については、正規表現の man ページを参照してください。「
通貨金額の入力に一致するパターンを構築する方法」を
参照してください。入力情報はお金を表す数字です。金額を表すには 4 つの方法があると考えられます。「10000.00」と「10,000.00」、または小数部分を省略した「10000」と「10,000」です。次に、この一致パターンの構築を開始しましょう:
^[1-9][。 0 -9]*$
これは、すべての変数が 0 以外の数字で始まらなければならないことを意味します。ただし、これは、単一の「0」ではテストに合格できないことも意味します。 解決策は次のとおりです。
^(0│[1-9] [0- 9]*)$
「0 と 0 で始まる数字のみが一致します」。数字の前に負号を付けることもできます:
^(0│-?[1-9][0-9]*)$
これは: 「0、またはその前にマイナス記号が付いている 0 で始まる数字。」 さて、ここではあまり厳密ではなく、0 から始まることを許可しましょう。コインを表しているので、マイナス記号を削除しましょう。これを使用する必要はありません。ここで、小数部分に一致するパターンを指定します:
^[0-9]+(.[0-9]+)?$
これは、一致する文字列が少なくとも 1 つのアラビア語で始まる必要があることを意味します。ただし、上記のパターンでは「10.」は一致せず、「10」と「10.2」のみが一致することに注意してください (理由はわかります)
^[0-9]+(.[0-9]{ 2) })?$
上で、小数点の後に小数点以下 2 桁が必要であると指定しましたが、これが厳しすぎると思われる場合は、次のように変更できます:
^[0-9]+(.[0-9]{1)。 ,2})? $
これにより、小数点の後に 1 文字または 2 文字が許可されるようになり (3 桁ごとに)、次のように表すことができます
。 ,[ 0-9]{3})*(.[0-9]{1,2})?$
プラス記号「+」を忘れないでください。この場合、乗算記号「*」に置き換えることができます。空白文字列の入力を許可したい場合は (なぜですか?)、バックスラッシュ '' が PHP 文字列でエラーを引き起こす可能性があることを忘れないでください (非常に一般的なエラー)。文字列を確認できたので、すべて削除します。 commas str_replace(" ,", "", $money) 次に、型を double として扱い、それを使用して数学的計算を行うことができます。
電子メール
アドレスを確認する方法について引き続き説明します。電子メール アドレスには 3 つの部分があります: POP3 ユーザー名 ( 「@」の左側すべて)、 「@」 、サーバー名 (残りの部分) ユーザー名には、大文字と小文字、アラビア数字、ピリオド ('. ')、マイナス ('-')、およびアンダースコア ('_') もこのルールに従いますが、ユーザー名
はピリオドで始めることはできません。サーバーについても同様です。連続するピリオドの間には少なくとも 1 文字が必要です。次に、ユーザー名に一致するパターンを記述する方法を見てみましょう。
^[_a-zA-Z0-9-]+$
ピリオドが存在します。まだ許可されていません。追加してみましょう:
^[_a-zA-Z0-9-]+(.[_a-zA-Z0-9-]+)*$
上記は、「少なくとも 1 つの正規文字で始める」ことを意味します。 (. 臨時記号を除く) の後に、ドットで始まる 0 個以上の文字列が続きます。 "
簡略化するために、 ereg() の代わりに eregi() を使用できます。 eregi() は大文字と小文字を区別しないため、指定する必要はありません。 2 つの範囲「az」と「AZ」 - 指定する必要があるのは 1 つだけです:
^[_a-z0-9-]+(.[_a-z0-9-]+)*$
その後のサーバー名は同じですただし、アンダースコアは削除する必要があります:
^[a-z0-9-]+(.[a-z0-9-]+)*$
ここで、「@」を使用して 2 つの部分を接続します:
^[_a -z0-9-]+ (.[_a-z0-9-]+)*@[a-z0-9-]+(.[a-z0-9-]+)*$
これで完了です電子メール認証照合モード。
eregi('^[_a-z0-9-]+(.[_a-z0-9-]+)*@[a-z0-9-]+(.[ a-z0-9-] +)*$ ',$eamil)
でメールかどうかを取得します。
正規表現を使用
して文字列を抽出する
他の例として、 ereg() および eregi() には、正規表現を使用して文字列の一部を抽出できる機能があります (具体的な使用法についてはマニュアルを参照してください)。パス/URL からの文字列 ファイル名を抽出します – 次のコードが必要です:
ereg("([^\/]*)$", $pathOrUrl, $regs);
echo $regs[1];
高度な置換
ereg_replace() と eregi_replace() も非常に便利です: 区切られた負符号をすべてカンマで置き換えたい場合:
ereg_replace("[ nrt]+" , "," 、トリム($str));