---
title: メンバー管理のメールアドレスに利用できる文字とバリデーション仕様を教えてください
description: RFC準拠のメールアドレスが利用できます。Kurocoでは特定の正規表現パターンでメールアドレス検証を行います。
category: system
---

import StructuredDataFaqs from '@site/src/components/StructuredDataFaqs';

<StructuredDataFaqs faqs={[
    { question: "メンバー管理のメールアドレスに利用できる文字を教えてください", answer: "Kurocoではデフォルトの挙動では特定の正規表現パターンでメールアドレス検証を行います。ただし別途、STRICT_VALIDATE_EMAIL定数を設定することでRFC準拠のメールアドレス制限に変更ができます。" }
]} />

メンバー管理のメールアドレスに利用できる文字を教えてください

Kurocoではデフォルトの挙動では特定の正規表現パターンでメールアドレス検証を行います。ただし別途、設定をすることでRFC準拠のメールアドレス制限に変更ができます。

## メールアドレス検証の正規表現

Kurocoでは、`preg_match()`関数を使用して以下の正規表現パターンでメールアドレスの検証を行います：

```php
preg_match('/^[a-zA-Z0-9.+!#$&*=?^_{|}~-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', $email_address)
```

この正規表現は以下の条件でメールアドレスを検証します：
- **ローカル部**（@より前）：英数字、ピリオド、パーセント、プラス、感嘆符、ハッシュ、アンパサンド、アスタリスク、等号、疑問符、ハット、アンダースコア、パイプ、波線、ハイフンが使用可能
- **ドメイン部**（@より後）：英数字、ピリオド、ハイフンが使用可能で、最後に2文字以上のトップレベルドメインが必要

## メールアドレス検証関数の実装

Kurocoでのメールアドレス検証には、設定に応じて2つの異なる検証モードがあります：

### 検証モード

**デフォルトの動作（正規表現による検証）:**  
Kurocoでは、デフォルトで**カスタム正規表現パターンによる検証**を行います：  
- 最大256文字の長さ制限を適用
- 独自に定義された特定の文字セットを許可
- 特別な設定を行わない場合の標準的な検証方法です

**RFC準拠モード（STRICT_VALIDATE_EMAIL定数による切り替え）:**  
`STRICT_VALIDATE_EMAIL`定数を設定すると、検証が**完全なRFC準拠**に切り替わります：  
- 公式のメールアドレス標準に従った完全なRFC準拠を提供
- RFC仕様を超えるカスタム長さ制限なし
- デフォルトの正規表現検証よりも寛容な検証

**デフォルトの正規表現検証からRFC準拠に切り替えるには：**

```php
STRICT_VALIDATE_EMAIL = 1;
```

この定数により、検証動作がカスタム正規表現パターンマッチングから標準的なRFC準拠のメールアドレス検証に変更されます。

:::info
`STRICT_VALIDATE_EMAIL`などの定数は、Kuroco管理画面の[定数](/ja/docs/management/constants/)で設定できます。
:::
