Skip to content

Instantly share code, notes, and snippets.

@KentarouKanno
Last active July 24, 2019 06:58
Show Gist options
  • Save KentarouKanno/9f65d029eed498d53fa073d627c24307 to your computer and use it in GitHub Desktop.
Save KentarouKanno/9f65d029eed498d53fa073d627c24307 to your computer and use it in GitHub Desktop.
正規表現

正規表現

参考URL: 正規表現の基本

・NSStringのメソッドを使用した場合

★ 引数に渡した数字がゾロでであるかを判定する

// 数値は0000以外を想定

if zoromeCheck(222222222) {
    print("ゾロ目")
} else {
    print("Not ゾロ目")
}

// ゾロ目判定メソッド
func zoromeCheck(num: Int) -> Bool {
    let nsstring = String(num) as NSString
    let pattern = "^([1-9])\\1+$"
    let match = nsstring.rangeOfString(pattern, options: .RegularExpressionSearch)
    return match.location != NSNotFound
}

★ 正規表現チェックサンプル Regular_ExpressionSample

  • 正規表現をいろいろな言語で確認できるサイト
    regex101
  • 正規表現を視覚化して確認できるサイト
    Regulex

ExRegular_Expression

文字 正規表現
ひらがな [あ-ん]
カタカナ [ァ-ヶ]
半角カタカナ [ア-ン]
漢字(簡易版) [一-龠]
数字のみ入力可 ^[0-9]+$ (\d+$と同じ)
数字のみ1~4桁のみ ^[0-9]{1,4}+$
数字のみ5桁以上 ^[0-9]{5,}+$
数字のみ6桁のみ ^[0-9]{6}+$
{N} 直前のパターンのN回の連続
{min,} 直前のパターンのN回の連続
{,max} 直前のパターンのmin回以上の連続
{min,max} 直前のパターンのmin回からmax回の連続
1文字ワイルドカード ピリオド .
複数 . が続く .*
先頭がc ^c
最後がc c$
cの文字が1文字以上 c+
先頭が00~99 ^[0-9][0-9]
アルファベットのみ ^[A-Za-z]+$
電話番号形式: 例 090-1234-5678 ^[0-9]{3}-[0-9]{4}-[0-9]{4}+$
メールアドレスチェック ^[A-Za-z0-9]!#$%&\’*+/=?^_`{
省略語:\a 任意の英数字(数字とアルファベット) : ([a-zA-Z0-9])
省略語:\b 空白 : ([ \t])
省略語:\c 任意の英字 : ([a-zA-Z])
省略語:\d 任意の 10 進数字 : ([0-9])
省略語:\D [0-9]以外
省略語:\h 任意の 16 進数字 : ([0-9a-fA-F])
省略語:\n 改行文字 : (\r
省略語:\q 引用符で囲まれた文字列 : ("[^\"]*")
省略語:\w すべてのアルファベットとアンダースコアのうち任意の一文字。[a-zA-Z0-9_]と同義
省略語:\W すべてのアルファベットとアンダースコア以外の1文字[^a-zA-Z0-9_]と同義
省略語:\z 整数 : ([0-9]+)
メタ文字 「.」  任意の 1 文字に一致します
メタ文字 「[ ]」  文字クラスを示します。角かっこ内のいずれかの文字に一致します。
たとえば、[abc] と指定した場合、"a"、"b"、および "c" のいずれかに一致します。
メタ文字 「^」  文字クラスの先頭にこのメタ文字がある場合は、後に続く文字クラスが否定されます。
このように指定した文字クラスは、角かっこ内の文字以外の任意の文字に一致します。
たとえば、[^abc] と指定した場合、"a"、"b"、および "c" 以外のすべての文字と一致します。
正規表現の先頭にある ^ は、入力文字列の先頭に一致します。たとえば、^[abc] と指定した場合、"a"、"b"、または "c" で始まる入力文字列だけに一致します。
0-9以外 [^0-9]
数字以外 ^[^0-9]+$
メタ文字(ハイフン) 「-」  文字クラスの中で使用され、文字の範囲を示します。
たとえば、[0-9] と指定した場合、"0" から "9" までの任意の数字に一致します。
メタ文字 「?」 直前の正規表現に一致する文字があるかないかわからない場合に使用します。
つまり、その正規表現が 0 回または 1 回出現するものと一致します。
たとえば、[0-9][0-9]? と指定した場合、"2" と "12" のいずれにも一致します。
メタ文字 「+」 直前の正規表現の 1 回以上の繰り返しに一致します。。
たとえば、[0-9]+ と指定した場合、"1"、"13"、"666" のいずれにも一致します。
メタ文字 「??, +?, *?」  ?、+、および * の最短一致。。
可能な限り広範囲に一致する最長一致とは異なり、最小範囲に一致します。。
たとえば、"" という文字列がある場合、<.?> と指定すると。
"" に一致し、<.
> と指定すると "" に一致します。
メタ文字 「( )」 グループ化演算子。たとえば、(\d+,)*\d+ と指定した場合、。
コンマで区切られた数字のリスト ("1"、"1,23,456" など) に一致します。
メタ文字 「{ }」  一致グループを示します。中かっこ内の正規表現に。
一致する実際のテキストを入力文字列から取得できます。
メタ文字 「¥()」 エスケープ文字。次に続く文字が、特殊文字としてではなく通常の文字として解釈されます。
たとえば、[0-9]+ と指定した場合は 1 つ以上の数字に一致しますが、
[0-9]+ と指定した場合は 1 つの数字にプラス記号が続いた文字列に一致します。
この文字は省略形としても使用されます。たとえば、¥a は任意の英数字を示します。次の表を参照してください。
¥ の後ろに数字 n が続く場合は、n 番目の一致グループに一致します。
番号は 0 から始まります。
たとえば、<{.?}>.?</¥0> は "Contents" に一致します。
メタ文字 「$」 正規表現の末尾にある $ は、入力文字列の末尾に一致します。
たとえば、[0-9]$ と指定した場合、入力文字列の末尾にある数字に一致します。
メタ文字 「|」 選択演算子。この演算子で区切られた 2 つの正規表現のいずれかに一致します。
たとえば、T|the と指定した場合、"The" または "the" に一致します。
メタ文字 「!」 否定演算子。! に続く正規表現は否定されます。
たとえば、a!b と指定した場合、後ろに "b" が続いていない "a" に一致します。

Sample

  • パスワード(8文字以上、15文字以下、数字とアルファベットのみ、どちらも最低1回以上は組み合わせて使う)
^(?=.*?[A-Za-z])(?=.*?[0-9])[A-Za-z0-9]{8,15}$
^[A-Za-z0-9.+_-]+@([A-Za-z0-9_-]+\.)+[A-Za-z]{2,}$
extension String {
    func validateRegularExpression(regex: String) -> Bool {
        let range = self.range(of: regex, options: .regularExpression)
        return range != nil
    }
}

^[a-zA-Z0-9]{1}[a-zA-Z0-9:,._-]+$

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment