=== Regex Validation for Gravity Forms ===
Contributors: zirkeldesign, dsturm
Tags: gravity forms, regex, validation, unicode, pattern
Requires at least: 6.0
Tested up to: 6.9
Requires PHP: 8.3
Stable tag: 1.0.4
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Adds custom regex validation with Unicode support and presets to Gravity Forms fields.

== Description ==

**Regex Validation for Gravity Forms** adds a powerful regex validation option to your Gravity Forms fields. Define custom regular expression patterns or choose from built-in presets to validate user input — both server-side and client-side.

= Features =

* **Custom regex patterns** — Add any regular expression to validate field input
* **Unicode support** — Full Unicode character class support (`\p{L}`, `\p{N}`) for international names and text
* **Built-in presets** — Quick-select common patterns for names, emails, phone numbers, and more
* **Server-side validation** — Secure PHP validation that can't be bypassed
* **Client-side validation** — Instant feedback on input change using JavaScript
* **Compound field support** — Works with Name fields (validates each sub-input individually)
* **Custom error messages** — Define user-friendly validation messages per field
* **Extensible** — Add your own presets and field types via filters
* **Accessible** — Error messages use `role="alert"` for screen readers

= Supported Field Types =

* Text
* Name (with individual sub-input validation)
* Email
* Phone
* Website
* Textarea

= Built-in Presets =

* **Name** — Unicode letters, spaces, hyphens, apostrophes
* **Email** — RFC 5322 compliant
* **US Phone Number** — Common US formats
* **International Phone Number** — E.164 format
* **Alphanumeric** — Unicode letters and numbers only
* **No Special Characters** — Unicode letters, numbers, and spaces only

== Installation ==

= From WordPress Admin =

1. Upload the `regex-validation-for-gravity-forms` folder to `/wp-content/plugins/`
2. Activate the plugin through the 'Plugins' menu in WordPress

= Via Composer =

    composer require zirkeldesign/regex-validation-for-gravity-forms

= Requirements =

* WordPress 6.0 or later
* PHP 8.2 or later
* Gravity Forms 2.5 or later

== Frequently Asked Questions ==

= How do I add a regex pattern to a field? =

Edit your form in Gravity Forms, select a supported field, and look for the "Regex Validation" section under the field settings. You can either select a preset pattern or enter your own custom regex.

= Does it support Unicode characters? =

Yes! All patterns use the `/u` flag for PHP and the `u` flag for JavaScript regex, enabling full Unicode property support like `\p{L}` for any letter in any language.

= Can I add my own presets? =

Yes, use the `gf_regex_validation_presets` filter:

    add_filter('gf_regex_validation_presets', function (array $presets): array {
        $presets['zip_code'] = [
            'label'   => 'US Zip Code',
            'pattern' => '/^\d{5}(-\d{4})?$/',
            'message' => 'Please enter a valid US zip code.',
        ];

        return $presets;
    });

= Can I add support for additional field types? =

Yes, use the `gf_regex_validation_field_types` filter:

    add_filter('gf_regex_validation_field_types', function (array $types): array {
        $types[] = 'number';

        return $types;
    });

= Is client-side validation secure? =

Client-side validation provides instant user feedback but should never be relied upon for security. This plugin always performs server-side validation as well, which cannot be bypassed.

== Screenshots ==

1. Regex validation settings in the Gravity Forms field editor
2. Preset selection dropdown
3. Client-side validation error message

== Changelog ==

= 1.0.4 =
* Fixed: Prevented a form editor JavaScript error by loading plugin admin scripts at the correct time

= 1.0.2 =
* Fixed: Admin field settings not appearing in Gravity Forms editor
* Improved: Code quality and WordPress coding standards compliance
* Enhanced: Development tooling for better maintainability

= 1.0.1 =
* Fixed: WordPress Plugin Check compliance issues
* Improved: Security and code standards

= 1.0.0 =
* Initial release
* Server-side and client-side regex validation
* Built-in presets for common patterns
* Unicode support with `\p{L}` and `\p{N}` character classes
* Name field compound input support
* Extensible via `gf_regex_validation_presets` and `gf_regex_validation_field_types` filters
