ホームページ  >  記事  >  ウェブフロントエンド  >  先読みは正規表現の文字長の制限にどのように役立ちますか?

先読みは正規表現の文字長の制限にどのように役立ちますか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-17 12:31:02519ブラウズ

How Can Lookaheads Help in Limiting Character Length in Regex?

先読みを使用して正規表現の文字長を制限する

正規表現を使用する場合、多くの場合、一致する文字の数を制限する必要があります。特定のパターン。ただし、次の例に示すように、アンカーに量指定子を適用しようとすると、エラーが発生する可能性があります。

var test =  /^(a-z|A-Z|0-9)*[^$%^&*;:,<>?()""']*${1,15}/    // Uncaught SyntaxError: Invalid regular expression

この制限を克服するには、入力文字列の先頭にアンカーされた先読みを使用できます。

^(?=.{1,15}$)[a-zA-Z0-9]*[^$%^&*;:,<>()?""']*$

この先読みにより、後続の文字が次の条件を満たすことが保証されます。条件:

  • 文字クラス [a-zA-Z0-9]1 内の指定されたパターンと一致します。
  • その長さは、量指定子で指定された 1 ~ 15 文字です。 {1,15}.
  • ドル記号 $ アンカーで表される文字列の末尾が続きます。

このアプローチを使用することで、効果的に長さを制限できます。入力文字列全体を 15 文字に制限し、指定されたパターンがその制限内で一致することを可能にします。

重要注

  • このメソッドを使用するときは、量指定子に「グループ」ではなく「文字クラス」を使用することを忘れないでください。
  • 先読みはゼロ幅のアサーションです。文字は消費されませんが、一致するかどうかは引き続きチェックされます。
  • 入力文字列に改行シーケンスが含まれる場合は、代わりに移植可能な構造体 [sS] を使用します。 [sS]* は、改行を含む任意の文字に一致します。

  1. $%^&*;:,<>()?""'

以上が先読みは正規表現の文字長の制限にどのように役立ちますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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