23 lines
791 B
TypeScript
23 lines
791 B
TypeScript
|
|
function escapeRegex(str: string): string {
|
||
|
|
return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')
|
||
|
|
}
|
||
|
|
|
||
|
|
export function matchesTarget(url: string, target: string): boolean {
|
||
|
|
if (target === url) return true
|
||
|
|
if (target.includes('*')) {
|
||
|
|
const escaped = escapeRegex(target)
|
||
|
|
const regex = new RegExp('^' + escaped.replace(/\\\*/g, '.*') + '$')
|
||
|
|
return regex.test(url)
|
||
|
|
}
|
||
|
|
return url.includes(target)
|
||
|
|
}
|
||
|
|
|
||
|
|
export function matchesWildcardPattern(value: string, pattern: string): boolean {
|
||
|
|
if (!pattern.includes('*') && !pattern.includes('?')) {
|
||
|
|
return value.toLowerCase() === pattern.toLowerCase()
|
||
|
|
}
|
||
|
|
const escaped = escapeRegex(pattern)
|
||
|
|
const regexPattern = '^' + escaped.replace(/\\\*/g, '.*').replace(/\\\?/g, '.') + '$'
|
||
|
|
return new RegExp(regexPattern, 'i').test(value)
|
||
|
|
}
|