Problem Statement:
I want to dynamically generate RegEx based on human provided input with simple .Net, C# web application.
Implementation:
- Create web application using .Net C#, Web API
- As prerequisite need to get the Open AI Service details. If it's not already exists follow this
- Go to Portal.Azure.Com
- Search for Azure OpenAI
- Create new Open AI and click to go to Azure AI Foundry
- In Azure AI Foundry, Left side click Home. This is your Open AI API Key to use in code below
- In Azure AI Foundry, Left side click PlayGrounds/Chat, you should be able to setup new Chatbot with new deployment model (For ex: GPT3.5Turbo, GPT5 etc,.). This is your Deployment Model Name to use in code below.
- Click the View Code on Chat, to get the Endpoint details. This is your Chat Completion Endpoint to use in code below.
- In index.cshtml, simply add textbox and post call
<h2>Balaji - AI-Powered Regex Validator - POC</h2>
<form method="post">
<label for="rule">Enter validation rule (human text):</label><br />
<input type="text" id="rule" name="Rule" value="@Model.Rule" size="50" /><br /><br />
<button type="submit">Generate Regex</button><br /><br />
@if (!string.IsNullOrEmpty(Model.GeneratedRegex))
{
<div><strong>Generated Regex:</strong> @Model.GeneratedRegex</div>
<br />
<label for="inputText">Enter text to validate:</label>
<br />
<input type="text" id="inputText" name="InputText" value="@Model.InputText" size="50" />
<br />
<br />
<div id="result">@Model.ValidationResult</div>
}
</form>
- In Index.cshtml.cs, add below logic to generate the validation from AI code.
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.RazorPages;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
namespace POCRegexBuilderAI.Pages
{
public class IndexModel : PageModel
{
[BindProperty]
public string Rule { get; set; }
[BindProperty]
public string InputText { get; set; }
public string GeneratedRegex { get; set; }
public string ValidationResult { get; set; }
public async Task<IActionResult> OnPostAsync()
{
if (!string.IsNullOrEmpty(Rule))
{
// Call OpenAI API to generate regex
var regex = await GenerateRegexFromRule(Rule);
GeneratedRegex = regex;
if (!string.IsNullOrEmpty(InputText) &&
!string.IsNullOrEmpty(regex))
{
try
{
var isValid = System.Text.RegularExpressions.Regex.IsMatch(InputText, regex);
ValidationResult =
isValid ? "✅ Valid
input" : "❌
Invalid input";
}
catch
{
ValidationResult = "⚠️
Invalid regex pattern.";
}
}
}
return Page();
}
private async Task<string> GenerateRegexFromRule(string rule)
{
var apiKey
= "1.ReplaceYourOpenAIKey";
var prompt
= $"Convert this
rule to regex: {rule}";
var
requestBody = new
{
model = "gpt-35-turbo", //2.Replace with your deployment model
messages = new[]
{
new { role = "user", content = prompt }
}
};
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
var
chatCompletionUrl = "https://api.openai.com/v1/chat/completions";//3.Replace
with your chatmodel endpoint
var content
= new StringContent(JsonSerializer.Serialize(requestBody), Encoding.UTF8, "application/json");
var response = await client.PostAsync(chatCompletionUrl,
content);
var responseString = await response.Content.ReadAsStringAsync();
using var doc = JsonDocument.Parse(responseString);
var regex =
doc.RootElement.GetProperty("choices")[0].GetProperty("message").GetProperty("content").GetString();
return regex.Trim();
}
}
}
- Now simply try with human text ("Zipcode with alphabet numeric with Min 3 and Max 5 character") to convert into Regex to apply in any textbox UI as output. It will show the validation simply as below