Validation

You can find full example at StackBlitz.

You can find full list of validation rules in createForm - register rules section.

Register input and apply validation rules:

import { createForm } from "solid-hook-form" export const ExampleForm = () => { const form = createForm({ defaultValues: { email: "" } }) const { errors, register, handleSubmit } = form const onSubmit = (values) => { console.log(values) } return ( <FormProvider form={form}> <form onSubmit={handleSubmit(onSubmit)}> <input {...register("email", { required: "Required", pattern: { value: /^[^@]+@[^@]+.[^@]+$/, // your email regex message: "Invalid email" } })} /> <pre>{JSON.stringify(errors, null, 2)}</pre> <button type="submit">Save</button> </form> </FormProvider> ) }

Don't forget to display an accessible error message:

<input {...register("email", { required: "Required", pattern: { value: /^[^@]+@[^@]+.[^@]+$/, // your email regex message: "Invalid email" } })} aria-invalid={Boolean(errors.email)} /> {errors.email && <p role="alert">{errors.email.message}</p>}

When using TypeScript, define form values type and apply it to the form for additional type safety:

type ExampleFormValues = { email: string; } const ExampleForm = () => { const form = createForm<ExampleFormValues>({ defaultValues: { email: "" } }) }