fix(sonar): remove duplicate characters in regex classes (javascript:S5869)

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
mARTin-B78 2026-10-06 13:33:25 +02:00
parent c16590709b
commit b365894e44
5 changed files with 5 additions and 5 deletions

View File

@ -150,7 +150,7 @@ const PATTERNS = [
['slack-token', /\bxox[baprs]-[A-Za-z0-9-]{10,}/], ['slack-token', /\bxox[baprs]-[A-Za-z0-9-]{10,}/],
['jwt', /\beyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/], ['jwt', /\beyJ[A-Za-z0-9_-]{10,}\.eyJ[A-Za-z0-9_-]{10,}\.[A-Za-z0-9_-]{10,}/],
['url-credentials', /\bhttps?:\/\/[^\s/:@'"]+:[^\s/@'"]{3,}@[^\s'"]+/], ['url-credentials', /\bhttps?:\/\/[^\s/:@'"]+:[^\s/@'"]{3,}@[^\s'"]+/],
['generic-secret', /\b(?:api[_-]?key|secret|token|passw(?:or)?d)\b['"]?\s*[:=]\s*['"][A-Za-z0-9_\-+/=]{20,}['"]/i], ['generic-secret', /\b(?:api[_-]?key|secret|token|passw(?:or)?d)\b['"]?\s*[:=]\s*['"][a-z0-9_\-+/=]{20,}['"]/i],
]; ];
function secretScan() { function secretScan() {
let hits = 0; let hits = 0;

View File

@ -3330,7 +3330,7 @@ function _charRealLine(rec) {
const sources = Array.isArray(rec.sheet && rec.sheet.sources) ? rec.sheet.sources : []; const sources = Array.isArray(rec.sheet && rec.sheet.sources) ? rec.sheet.sources : [];
const quotes = sources.map(function (s) { return s && s.quote ? String(s.quote).trim() : ''; }) const quotes = sources.map(function (s) { return s && s.quote ? String(s.quote).trim() : ''; })
.filter(function (q) { return q.length >= 20 && q.length <= 240; }); .filter(function (q) { return q.length >= 20 && q.length <= 240; });
const spoken = quotes.find(function (q) { return /[""„"]/.test(q); }); const spoken = quotes.find(function (q) { return /["„]/.test(q); });
if (spoken) return spoken; if (spoken) return spoken;
if (quotes.length) return quotes[0]; if (quotes.length) return quotes[0];
return null; return null;

View File

@ -4873,7 +4873,7 @@ function clearWordHighlight() {
function estimateWordTimings(words, totalSeconds) { function estimateWordTimings(words, totalSeconds) {
if (!words.length || !totalSeconds) return []; if (!words.length || !totalSeconds) return [];
const FIXED = 0.6; // arbitrary units, shifts weight toward evening out short words const FIXED = 0.6; // arbitrary units, shifts weight toward evening out short words
const weights = words.map((w) => Math.max(1, w.replace(/[.,!?;:"'()«»„"]/g, '').length) + FIXED); const weights = words.map((w) => Math.max(1, w.replace(/[.,!?;:"'()«»„]/g, '').length) + FIXED);
const total = weights.reduce((a, b) => a + b, 0); const total = weights.reduce((a, b) => a + b, 0);
let t = 0; let t = 0;
return weights.map((w) => { return weights.map((w) => {

View File

@ -464,7 +464,7 @@ async function readerOcrPageHeading(page, base, pageIdx, gapPx) {
// clean "3.Kapitel" recognition also produced a trailing "|" token, // clean "3.Kapitel" recognition also produced a trailing "|" token,
// which broke chapter-detection's stricter "nothing after the heading // which broke chapter-detection's stricter "nothing after the heading
// but a number/subtitle" check by leaving that stray symbol behind it. // but a number/subtitle" check by leaving that stray symbol behind it.
const tokens = text.split(' ').filter(t => t && /[a-zäöüßàâçéèêëîïôûùüÿñæœ0-9]/i.test(t)); const tokens = text.split(' ').filter(t => t && /[a-zäöüßàâçéèêëîïôûùÿñæœ0-9]/i.test(t));
if (!tokens.length) return []; if (!tokens.length) return [];
const bandH = Math.max(gapPx - 4, 10); const bandH = Math.max(gapPx - 4, 10);
const avgCharW = Math.max((base.width - 16) / text.length, 4); const avgCharW = Math.max((base.width - 16) / text.length, 4);

View File

@ -4,7 +4,7 @@
(function (root) { (function (root) {
function _trainNormWords(str) { function _trainNormWords(str) {
return (str || '').toLowerCase().replace(/[^a-zäöüàáâãèéêëìíîïòóôõùúûüýÿæœßа-яёА-ЯЁ0-9\s]/g, '').trim().split(/\s+/).filter(Boolean); return (str || '').toLowerCase().replace(/[^a-zäöüàáâãèéêëìíîïòóôõùúûýÿæœßа-яёА-ЯЁ0-9\s]/g, '').trim().split(/\s+/).filter(Boolean);
} }
function _trainLcs(a, b) { function _trainLcs(a, b) {