DEV Community

D
D

Posted on

よく使う正規表現

各言語で正規表現のサンプルを書いてみました。

正規表現式

  • Emailアドレス
    ^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$

  • ドメイン名
    ^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9]\.[a-zA-Z]{2,}$

  • インタネットURL
    ^(http|https)://([\w-]+\.)+[\w-]+(/[\w-./?%&=]*)?$

  • ユーザー名 (Twitter username)
    ^[a-zA-Z0-9_\-.]{3,15}$

  • 固定電話
    ^0\d-\d{4}-\d{4}$

  • 携帯電話
    ^(070|080|090)-\d{4}-\d{4}$

  • IP電話
    ^050-\d{4}-\d{4}$

  • フリーダイヤル
    ^0120-\d{3}-\d{3}$

  • パスワード(大文字小文字英数字組み合わせ、特殊文字禁止、長さは8-10
    ^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$

  • 日付 (YYYY-MM-DD)
    ^\d{4}-\d{1,2}-\d{1,2}$

  • 郵便番号
    ^\d{3}-\d{4}$

  • XML
    ^([a-zA-Z]+-?)+[a-zA-Z0-9]+\\.[x|X][m|M][l|L]$

  • 空白行
    \n\s*\r

  • 先頭後尾空白文字
    ^\s*|\s*$

  • IPアドレス
    \d+\.\d+\.\d+\.\d+

  • IPアドレス
    ((?:(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d?\\d))

  • 数字
    ^[0-9]*$

  • N桁数字
    ^\d{n}$

  • N桁以下数字
    ^\d{n,}$

  • M-N桁数字
    ^\d{m,n}$

  • ゼロから始まる数字
    ^(0[0-9]*)$

  • ゼロ以外から始まる数字
    ^([1-9][0-9]*)$

  • 小数点以下1-2位数字
    ^(\-)?\d+(\.\d{1,2})?$

  • 正整数
    ^[1-9]\d*$

  • 負整数
    ^\-[1-9]\d*$

  • 英数字
    ^[A-Za-z0-9]+$

  • 長さが3-20の全ての文字
    ^.{3,20}$

  • 大文字小文字26英字
    ^[A-Za-z]+$

  • 大文字26英字
    ^[A-Z]+$

  • 小文字26英字
    ^[a-z]+$

言語別

Go

package main

import (
    "fmt"
    "regexp"
)

func main() {
    rep := regexp.MustCompile(`^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$`)
    isEmail := rep.MatchString("dongri@qiita.com")
    fmt.Println(isEmail) // true | false
}

Ruby

#!/usr/bin/env ruby

rep = Regexp.new("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$")
isEmail = rep === "dongri@qiita.com"
puts isEmail

JavaScript


var regex = /^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/;
regex.test("dongri@qiita.com"); // true | false

var regex = new RegExp('^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$');
regex.test("dongri@qiita.com"); // true | false

Perl


#!/usr/bin/env perl

$rep = '^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$';
$email = 'dongri.@qiita.com';
if ($email =~ /$rep/) {
    print "valid";
} else {
    print "invalid";
}

Python

#!/usr/bin/env python

import re

rep = '^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$';
email = 'dongri@qiita.com';
isEmail = re.match(rep, email) != None;

print(isEmail);

Swift


import Foundation

let rep = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$"
let email = "dongri@qiita.com"
let isEmail = NSPredicate(format: "SELF MATCHES %@", rep).evaluate(with: email)

print(isEmail)

Java

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Test {
    public static void main(String[] args) {
        String regex = "^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$";
        String email = "dongri@qiita.com";
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(email);
        Boolean isEmail = matcher.matches();

        System.out.println(isEmail);
    }
}

Top comments (2)

Collapse
 
minoritea profile image
Minori Tokuda

^$はPHPなどでは改行を考慮せず危険なので\A\zを使いましょう

Collapse
 
dongri profile image
D

はい!
LGTM