zeroreg
Write regex without the tears or confusion.
zeroreg is a Gleam port of zeroreg-go: a small, readable regex builder with pre-built patterns for common validation tasks.
Status
This package currently targets Erlang/OTP because the runtime helpers use Erlang's re module.
Installation
gleam add zeroregUsage
import zeroreg
pub fn phone() {
let phone_pattern =
zeroreg.optional_str("+")
|> zeroreg.then(zeroreg.digit(3))
|> zeroreg.then_str("-")
|> zeroreg.then(zeroreg.digit(3))
|> zeroreg.then_str("-")
|> zeroreg.then(zeroreg.digit(4))
zeroreg.matches(phone_pattern, "+123-456-7890")
}You can also use the built-in patterns:
import zeroreg/patterns
pub fn valid_email(input: String) -> Bool {
patterns.email()
|> patterns.matches(input)
}Builder API
Character classes:
digit(count)non_digit()word()non_word()whitespace()non_whitespace()letter()lowercase()uppercase()alphanumeric()any()literal(string)char_in(chars)char_not_in(chars)range(from, to)
Composition:
then(pattern, next)then_str(pattern, string)or_(pattern, other)or_str(pattern, string)group(pattern)capture(pattern)named_capture(pattern, name)one_of(patterns)one_of_str(strings)
Quantifiers:
one_or_more(pattern)zero_or_more(pattern)optional(pattern)times(pattern, count)between(pattern, min, max)at_least(pattern, min)at_most(pattern, max)
Anchors and escapes:
start_of_line()end_of_line()word_boundary()non_word_boundary()newline()tab()carriage_return()
Runtime helpers:
source(pattern)matches(pattern, input)match(pattern, input)match_all(pattern, input)replace(pattern, input, replacement)
Pre-built Patterns
The zeroreg/patterns module includes:
emailurlphonedatetimeipv4ipv6hex_colorhexuuidslughashtagmentioncredit_cardssnzip_codeusernamesemvermac_address
And strong_password(input) as a helper function.