DEV Community

Jack H. Peterson
Jack H. Peterson

Posted on

1

Using matches & regex in Twig!

Problem

You may be having trouble with using regex and links in twig/php!

Typical Solution

Generally, You'd want to escape a slash!
Example:
/path/to/resouces/
would look something like this in js:
/\/path\/to\/resources\//
/ === delimiter
\/ === escaped slash

This doesn't play nicely with twig!
I figure twig is trying to be smart and escape things for you.
but I'm not really sure whats going on.

Real Solution

(Thankfully, php provides a way to work around this issue.)[https://www.php.net/manual/en/regexp.reference.delimiters.php]

Alternate delimiters:
/foo/ | #foo# | +foo+ | %foo% | <foo> | (foo) | {foo} | [foo]
All of the above delimiters are valid!

Applied Solution

This means, if we take our URL:
/path/to/resouces/
We just need to wrap it with a delimiter which isn't used in the string.
Example:
{/path/to/resouces/}
That's it! The regex should work how you'd like it to.

Wrap Up

Regex is weird.
Twigs undocumented behavior is weird.
together they're an afternoon of frustration.

Image of Timescale

🚀 pgai Vectorizer: SQLAlchemy and LiteLLM Make Vector Search Simple

We built pgai Vectorizer to simplify embedding management for AI applications—without needing a separate database or complex infrastructure. Since launch, developers have created over 3,000 vectorizers on Timescale Cloud, with many more self-hosted.

Read full post →

Top comments (1)

Collapse
 
ianbromwich profile image
Ian B •

Cheers, this pointed me in the right direction! the lack of official documentation is crazy 🤯

I had to format this regex like this to get working in twig

/\\d{4}-[01]\\d-[0-3]\\dT[0-2]\\d:[0-5]\\d:[0-5]\\d([+-][0-2]\\d:[0-5]\\d|Z)$/
Enter fullscreen mode Exit fullscreen mode

🤢

Billboard image

The Next Generation Developer Platform

Coherence is the first Platform-as-a-Service you can control. Unlike "black-box" platforms that are opinionated about the infra you can deploy, Coherence is powered by CNC, the open-source IaC framework, which offers limitless customization.

Learn more