一般的な問題に対する正規表現のソリューション(継続的に更新されます)

正規表現パターンを構築するときは、マッチング結果の精度だけでなく、その実行効率も考慮する必要があります。

一般的なシナリオ

 

シナリオ1:3桁の市外局番と7桁の番号で構成される北米の電話番号ハイフンで区切ります)。各番号は任意の番号にすることができますが、市外局番とオフィスコードの最初の桁を0または1にすることはできません

  テキスト:ル:248-555-1234

     ベン:(313)555-1234

     ディー:(810)555-1234

  正規表現:\(?[2-9] \ d \ d \)?[-]?[2-9] \ d \ d- \ d {4}

分析:最初の\(?、エスケープ(、の括弧と一致できます(、?括弧があるかどうかを意味します

   最初の1は1または0ではないため、すべて[2-9]を取り、\ dは他の任意の数です

   \)の後ろ?末尾のブラケットはオプションです

   [-]?3つのケースを表します。スペースの場合もあれば、直接の場合もあれば、直接の場合もありません。その後に基本的な数値の一致が続きます。{4}は4回繰り返すことを意味します

しかし実際には、上記は十分に包括的ではなく、たとえば、888)222-1234が片側のみの場合)、正常に照合されます。

だから(\()?[2-9] \ d \ d(?(1)\)|-)[-]?[2-9] \ d \ d- \ d {4}に変更する理由がわからない質問、アイデアは条件付きクエリを実行することです

 

 中国の固定電話番号も同様です。

ルール:最初は0が固定されています。これは長距離を意味し、2、3、4桁の市外局番、7桁または8桁の電話番号が続きます。

正規表現:\(?0 [1-9] \ d {1,3} \)?[-]?[2-9] \ d {2,3} [-]?\ D {4}

 

 

 

 

おすすめ

転載: www.cnblogs.com/ljg1998/p/12701377.html