I recently asked Zoho for help using regex in Zoho Mail custom filters and was told it was NOT supported.
This was surprising (and frustrating) as regex in Zoho Mail certainly works, although it does have some quirks*
To encourage others, here are 3 regex examples I created in mail custom filters that have worked fine for me.
Spoiler: I'm not a coder so these examples took me a lot of searching (thanks to others on this site) and tinkering to get the job done — if anyone has improvements on these regex examples, I'm very happy for you to offer them.
Regex examples
1) Purpose: to find all Jpeg, Jpg and Png image urls in email content
regex = "(https?:\/\/[^\s'\"]+?\.(?:jpg|jpeg|png))";
2) Purpose: to find all image urls in email content
regex = '<img[^>]*src="(https?:[^\s,">]*)"';
3) Purpose: to remove unwanted characters in email content, leaving only the urls matched in examples 1 and 2
regex = "\A[\s\S]+?\|\||\|\|[\s\S]+?\||\|\|[\s\S]+?\Z";
Regex explanation and script examples:
1) regex = "(https?:\/\/[^\s'\"]+?\.(?:jpg|jpeg|png))";
(...) outer brackets allow match to be captured by variable $1
https? ? makes the previous char optional, so matches http or https
: literal colon
\/\/ '\' is required to escape '/' so \/\/, matches '//'
[^...] ^ = don't match chars in square brackets
\s = white space
' = single quote
\" = escaped double quote — matches double quote
(if i had used single quotes, instead of double, around the whole regex
I wouldn't have needed to escape the double quote here)
So, [^\s'\"] means match any char EXCEPT white space, single or double quotes
+ + = match one or more of the chars in square brackets
? ? = match the LEAST number of chars (lazy match)
\. = escaped dot matches an actual dot (without escape, the dot would match any char except newline)
(?:...) ?: = this bracketed group will not be captured by any variable
jpg|jpeg|png the pipe means 'OR' so this group matches jpg OR jpeg OR png
Script Example
foundUrls = mailContent.replaceall(regex,"||$1||");
Here the $1 variable captures the regex match between (...) so, "||$1||" means 'replace each match with a double pipe and the match, and a double pipe. i.e. place a double pipe around each matched URL.
2) regex = '<img[^>]*src="(https?:[^\s,">]*)"';
'....' using single quotes means it's not necessary to escape the double quotes inside the regex
<img matches liters <img
[^>] match any character EXCEPT >
* match the chars in the square brackets zero or multiple times
src=" match literal src="
(...) the match inside the brackets is saved to variable $1
https? match http or https (? means previous char is optional)
: literal colon
[^\s,">]* match any character EXCEPT white space, double quote, chevron — zero or multiple times
" the match must finish with a double quote
NB: the captured variable $1 will only contain the URL from http up to, but not including the final double quote
Script Example
foundUrls = MailContent.replaceAll(regex,"||$1||");
Here, the 'long' URL (<img.. src..."http...) is replaced by the 'short' URL (http....) and surrounded by double pipes
3) regex = "\A[\s\S]+?\|\||\|\|[\s\S]+?\||\|\|[\s\S]+?\Z";
The regex has three options for a match, each separated by a pipe meaning 'OR'
First option:
\A = Start Of File (i.e search from the beginning of the file)
[\s\S] matches any white space (\s) and any non-white space (\S)
+ + = match one or more of the chars in square brackets
? ? = match the LEAST number of characters necessary (lazy match)
\|\| '\' escapes the pipes so matches '||' (without escape the pipes would be read as 'OR')
| unescaped pipe = OR (i.e. match either first OR second parts of the regex)
Second option:
\|\| escaped pipes, so matches '||'
[\s\S]+? match any space or non-space one or more times, but use the LEAST chars necessary
\| escaped pipe, so matches '|' (NB: when this group is deleted it will leave one pipe between URLs)
| unescaped pipe = 'OR' (ie match second OR third parts of the regex)
Third option
\|\| escaped pipes, matches '||'
[\s\S]+? match any space or non-space one or more times, but use the LEAST chars necessary
\Z = End Of File (i.e. search to the end of the file)
Script example
cleanUrls = foundUrls.replaceAll(regex,"");
Thus
Option 1: 'StartOfFile up to and including '||' gets deleted.
Option 2: '||' to '|' inclusive gets deleted (leaving one pipe between URLs)
Option 3: '||' to EndOfFile gets deleted
Replacing the single pipes with commas to form a list of URLs is accomplished with:
urls = cleanUrls.toList("|");
NB These scripts use pipes to bracket and separate URLS It's therefore prudent, BEFORE applying the scripts, to remove any existing pipes from the selected text:
regex = '\|';
cleanMailContent = mailContent.replaceAll(regex,"");
* Quirks of Zoho Mail Deluge
While the scripting language is similar to JavaScript it is not identical and some features of Regex do not work.
In particular, I've not had success using 'lookahead' or 'lookbehind' operations in Zoho Mail custom filters.
Recent Topics
Finding missing records
I have a challenge and I am not really sure where to start with it. I can't find any similar threads on here, can anyone help: I have two forms, FormA and FormB. Both forms have records that contain a field called Job_Number. What I am trying to achieve
Kaizen #57 - Mass Update API in Zoho CRM
Hello everyone! Welcome back to yet another post in the Kaizen series. This week, we will discuss the Mass Update API in Zoho CRM. In this post, we will cover the following: 1. Introduction 2. Mass Update Records API 3. Schedule Update and Get Status
Editing the Ticket Properties column
This is going to sound like a dumb question, but I cannot figure out how to configure/edit the sections (and their fields) in this column: For example, we have a custom "Resolution" field, which parked itself in the "Ticket Information" section of this
Has Anyone successfully integrated Zoho and Sage Intact?
Hey all, We’re evaluating Zoho One + Sage Intacct and I’m trying to connect with anyone who has actually implemented the two together.Specifically, I’d love to know: -- Which functions you kept in Zoho vs. Intacct (e.g., Product Catalog, AR/AP, invoicing,
Creator HTML page refresh
Hi, I have added around 5 different html snippets in single creator page. I understand, I can refresh the entire page from page script using Navigational URLs https://help.zoho.com/portal/en/kb/creator/developer-guide/others/url-patterns/articles/navigational-urls
Zero Personalization of the File Sharing Experience
By now (2025) this is the maximum level of personalization available for a Zoho sharing link. We gently asked Zoho if we could modify at least the background, and they replied that it cannot be customized. We're truly disappointed – and surprised every
Canvas Flex Box containers should not require a width/height.
Flexbox containers are often used as organizational concepts, to ease re-flow on mobile etc. - I cannot use % for flexbox W or H - I cannot omit W or H This means that the content cannot dictate, and a Flexbox container cannot be used merely as an organizational
Its 2022, can our customers log into CRM on their mobiles? Zoho Response: Maybe Later
I am a long time Zoho CRM user. I have just started using the client portal feature. On the plus side I have found it very fast and very easy (for someone used to the CRM config) to set up a subset of module views that make a potentially extremely useful
Automation in Zoho Sprints
Hi. I have a Sprints board with the following statuses: ToDo, InProgress, CodeReview, Testing, Preprod, Live When a ticket is moved from e.g. Testing to Preprod, the following tags should be modified: remove 'tested OK' remove 'ready for Preprod' add
Custom function return type
Hi, How do I create a custom deluge function in Zoho CRM that returns a string? e.g. Setup->Workflow->Custom Functions->Configure->Write own During create or edit of the function I don't see a way to change the default 'void' to anything else. Adding
Two factor authentication for helpdesk users
The company i work for wants use the helpdesk site in Zoho desk, as a place for their distribution partners to ask question and look for information about our product. The things there is suppose to go up there is somewhat confidential between my company
Kiosk can't merge picklist or multiselect
There is no ability to load a multiselect or picklikst field into a kiosk with the values that have been previously selected. So, I essentially have 3 unacceptable options: 1.)Load the value into a text string and include instructions like this: "Picklist
AGE field from DATE OF BIRTH Field.
HI! I have a field called date of birth in my CRM (LEADS, CONTACT etc…) How can I know the AGE today I would like to create a field AGE. I now how to create a field but I don´t which calculation (CUSTOM FUCTION) to make ¿ANY HELP?
CRM x WorkDrive: File storage for new CRM signups is now powered by WorkDrive
Availability Editions: All DCs: All Release plan: Released for new signups in all DCs. It will be enabled for existing users in a phased manner in the upcoming months. Help documentation: Documents in Zoho CRM Manage folders in Documents tab Manage files
How to update/remove file in zoho creator widgets using javascript API
Hi Team, I have developed a widget which allows inserting and updating records I have file upload field with multiple file upload. Now while doing insert form record, I am using uploadFile API to upload files for that record. I am using updateRecord API
Contact data removes Account data when creating a quote
Hi, Our customer has address fields in their quote layout which should be the address of the Account. They prefill the information, adding the account name - the address data is populated as per what is in the account - great. However when they then add
Introducing Enhanced Storage Management
We’re excited to roll out two new enhancements in Zoho Recruit, Subscription Information and Storage Management — designed to give admins complete visibility into subscription details, feature limits, and storage consumption — all from one place inside
Announcing new features in Trident for Windows (v.1.34.4.0)
Hello Community! Trident for Windows just got better! With this update we have features that make your daily work easier and more efficient. We've added some features that are exclusive to our app and we're sure you'll find them useful. Let’s dive into
Report Hover Setting
Would be great if we will able to show information to the user while hovering a record in a report.
Vertical images displayed as horizontal
Some pictures that originally are in vertical position are displayed in horizontal after the upload. It seems that system rotates them by 90 degrees. How can I fix this issue?
Zoho Desk iOS update: Custom buttons, follow/ unfollow option on tickets
Hello everyone! In the most recent Zoho Desk iOS app update, we have brought in support to access the custom buttons configured on web app(desk.zoho.com). Using custom buttons you can seamlessly execute predefined actions directly from their mobile devices,
Zoho Desk iOS app update: Saved filters and sort options
Hello everyone! Saved filters created on the web(desk.zoho.com) for tickets are now accessible on the Zoho Desk iOS app. You can easily rename, delete, or clear filters on the go. We have also introduced Sort options on the ticket listing screen, allowing
Introducing VeriFactu Support in Zoho Books
Hello users, Spain has introduced the VeriFactu system under Real Decreto 1007/2023 to ensure integrity, traceability, and anti-fraud compliance in e-invoicing. Starting January 1, 2026, all B2B invoices must be reported to Agencia Estatal de Administración
Big Things Just Dropped in the SalesIQ Universe: Top Upgrades You’ll Love in Nova’25
Nova'25 has landed, and it’s packed with meaningful upgrades to help you engage smarter, work faster, and scale with ease. Whether you're into proactive messaging, smarter automation, or better admin control, there's something here for everyone. Here's
Time Entries in Analytics
I am trying to import a zoho sheet into zoho analytics. In my sheets one of the columns has "time Entries" in this "format HH:MM am/pm" example 11:00 PM. After import, i noticed that analytics converted the time to "00 Jan 1900 23:00:00".. how do i maintain
Amazon invoice in Zoho Books
I have just made my first few sales on Amazon India. Amazon Seller account generates invoices for the sales made on Amazon. These invoices are sent to customers also. Now when I was only making offline sales, I used to create Invoices in Zoho Book. Now
Zoho Creator Upcoming Updates - November 2025
Hello everyone, Welcome to your monthly roundup of new features and enhancements! We hope you've already taken a look at Release Projection 2—it details the features coming your way for the rest of the year. And this month, we're excited to start rolling
All new Address Field in Zoho CRM: maintain structured and accurate address inputs
The address field will be available exclusively for IN DC users. We'll keep you updated on the DC-specific rollout soon. It's currently available for all new sign-ups and for existing Zoho CRM orgs which are in the Professional edition. Latest update
Detect and ignore bots in visitors
The SalesIQ visitor numbers are basically useless to us because there is no bot detection. We get the same bots coming in from the same countries looking at the same pages every day. It can't be that difficult to tell the difference between an actual
Zoho Webinar + HubSpot : Simplifiez la gestion de vos données de webinaires
Les webinaires sont aujourd’hui essentiels pour interagir avec vos prospects et vos clients. Cependant, la gestion des données entre plusieurs plateformes peut vite devenir complexe. Grâce à la nouvelle intégration entre Zoho Webinar et HubSpot, vos outils
Function #53: Transaction Level Profitability for Invoices
Hello everyone, and welcome back to our series! We have previously provided custom functions for calculating the profitability of a quote and a sales order. There may be instances where the invoice may differ from its corresponding quote or sales order.
I am trying to give access to one of our educators access to 3 forms in Zoho and she is not able to view the data - Access issue
Hi Team, When I try to provide read access to one of our educators on Zoho for Pre-training , post training and Impact survey forms submit form access which also allows them to read , it does not show them data
How to book GST paid in zoho books
hi, i am a new user to Zoho books and not able to book GST paid in books, kindly suggest how i can book it in books. thanks, siddharth
Enable Screen Recording in Zoho WorkDrive Mobile Apps (Android & iOS)
Hi Zoho WorkDrive Team, How are you? We are enthusiastic Zoho One users and rely heavily on Zoho WorkDrive for internal collaboration and content sharing. The screen-recording feature in the WorkDrive web app (similar to Loom) is extremely useful- however,
PUNJAB NATIONAL BANK (CORPORATE) INDIA - NOT AVAILABLE IN BANKING
Dear sir, Kindly fix it. PUNJAB NATIONAL BANK (INDIA) is available but PUNJAB NATIONAL BANK (CORPORATE) is not available. Kindly enable this banking since we need to categorize the entries. Regards, Sanjay Jena email id/ user id : travewithmerchant@
Employment Contract / HRMS Documents - Zoho People
How do I create customized HR documents for disbursal from Zoho People ? Example, say offer letters ? appointment letters ? Memos ? We want to be able to preset these in one or ther other form and issue them to employees who are in Zoho People.
Is it possible to create a word cloud chart in ZoHo Analystics?
Hi there, I have a volume of transaction text that I would like to analyse using word cloud (or other approcah to detect and present word frequency in a dataset). For example, I have 50,000 records describing menu items in restaurants. I want to be able
Playback and Management Enhancements for Zoho Quartz Recordings
Hello Zoho Team, We hope you're all doing well. We would like to submit a feature request related to Zoho Quartz, the tool used to record and share browser sessions with Zoho Support. 🎯 Current Functionality As of now, Zoho Quartz allows users to record
Zia Profile Summary now supports six languages and responds faster
After numerous customer requests, we’ve expanded Zia Profile Summary to do more than just summarize resumes quickly. It can now summarize them in six different languages and deliver results even faster. What’s New 1. Extended language support Zia can
Kaizen #216 - Actions APIs : Email Notifications
Welcome to another week of Kaizen! For the last three weeks, we have been discussing Zylker's workflows. We successfully updated a dormant workflow, built a new one from the ground up and more. But our work is not finished—these automated processes are
Next Page