diff --git a/public/partials/anonymize.htm b/public/partials/anonymize.htm
index 8497b69..0542f4a 100644
--- a/public/partials/anonymize.htm
+++ b/public/partials/anonymize.htm
@@ -149,7 +149,7 @@
One term per line (regex allowed). Replaced by {{site_options.ANONYMIZATION_MASK}}-[N], or use term=>replacement to pick your own (e.g. Anonymous=>ABC).
-
Regex characters detected. Escape them if unintentional.
+
Regex characters detected. Escape them if unintentional.
Terms are in an invalid format.
diff --git a/public/script/app.js b/public/script/app.js
index 32fc0b0..1cc87ba 100644
--- a/public/script/app.js
+++ b/public/script/app.js
@@ -1375,10 +1375,11 @@ angular
function anonymizeReadme() {
if (!$scope.anonymize || !$scope.anonymize.terms) return;
- setValidity("terms", "regex", true);
- if ($scope.terms && $scope.terms.match(/[-[\]{}()*+?.,\\^$|#]/g)) {
- setValidity("terms", "regex", false);
- }
+ // The "regex characters detected" hint is informational, not a blocker
+ // — IP addresses, escaped chars, etc. are all legitimate terms (#430).
+ // Track it as a plain $scope flag so it doesn't mark the form invalid.
+ $scope.termsRegexWarning =
+ !!$scope.terms && !!$scope.terms.match(/[-[\]{}()*+?.,\\^$|#]/g);
const urlRegex = /\b((https?|ftp|file):\/\/)[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]\b\/?>?/g;
let content = $scope.readme;
if (!$scope.options.image) {
@@ -1486,7 +1487,7 @@ angular
setValidity("sourceUrl", "github", true);
setValidity("conference", "activated", true);
setValidity("terms", "format", true);
- setValidity("terms", "regex", true);
+ $scope.termsRegexWarning = false;
}
function displayErrorMessage(message) {
diff --git a/public/script/bundle.min.js b/public/script/bundle.min.js
index 9716358..82072ee 100644
--- a/public/script/bundle.min.js
+++ b/public/script/bundle.min.js
@@ -2622,4 +2622,4 @@ Expecting `+E.join(", ")+", got '"+(this.terminals_[v]||v)+"'":"Parse error on l
:root { --mermaid-alt-font-family: ${t.altFontFamily}}`),i instanceof Map){let e=t.htmlLabels??t.flowchart?.htmlLabels?["> *","span"]:["rect","polygon","ellipse","circle","path"];i.forEach(t=>{gq(t.styles)||e.forEach(e=>{n+=$Fe(t.id,e,t.styles)}),gq(t.textStyles)||(n+=$Fe(t.id,"tspan",(t?.textStyles||[]).map(e=>e.replace("color","fill"))))})}return n},"createCssStyles"),RFe=mt((e,t,i,n)=>{i=LFe(e,i);return uFe(aFe(n+`{${ch(t,i,e.themeVariables)}}`),dFe)},"createUserStyles"),MFe=mt((e="",t,i)=>{let n=e;return i||t||(n=n.replace(/marker-end="url\([\d+./:=?A-Za-z-]*?#/g,'marker-end="url(#')),n=(n=nC(n)).replace(/ /g," ")},"cleanUpSvgCode"),IFe=mt((e="",t)=>{return`