mirror of
https://github.com/discourse/discourse.git
synced 2025-09-12 21:10:47 +08:00
FIX: censored regex words were replacing other text that shouldn't be censored
This commit is contained in:
parent
594efa37b6
commit
dc97239040
2 changed files with 15 additions and 3 deletions
|
@ -36,13 +36,14 @@ export function censorFn(censoredWords, censoredPattern, replacementLetter, watc
|
|||
|
||||
try {
|
||||
let m = censorRegexp.exec(text);
|
||||
const fourCharReplacement = new Array(5).join(replacementLetter);
|
||||
|
||||
while (m && m[0]) {
|
||||
if (m[0].length > original.length) { return original; } // regex is dangerous
|
||||
const replacement = new Array(m[0].length+1).join(replacementLetter);
|
||||
if (watchedWordsRegularExpressions) {
|
||||
text = text.replace(new RegExp(`(${escapeRegexp(m[0])})(?![^\\(]*\\))`, "ig"), replacement);
|
||||
text = text.replace(censorRegexp, fourCharReplacement);
|
||||
} else {
|
||||
const replacement = new Array(m[0].length+1).join(replacementLetter);
|
||||
text = text.replace(new RegExp(`(\\b${escapeRegexp(m[0])}\\b)(?![^\\(]*\\))`, "ig"), replacement);
|
||||
}
|
||||
m = censorRegexp.exec(text);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue