Совпадение с частью фамилии (имени ...), с допустимой ошибкой до 2х букв?
Пример.
Ввожу: питр
Находит: Петров | Петя | Петр | Шпилькин ...
То есть 2 произвольные буквы могут быть другими, а сама подстрока может быть в любом месте слова (начало, середина, конец).
Возможно такое выражение? Заранее благодарен!
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
2 произвольные буквы могут быть другими, а сама подстрока может быть в любом месте слова
Могу предложить такое решение...
const str = 'питр'
const a = ['Петров', 'Петя', 'Петр', 'Шпилькин']
const re = reg(str)
console.log(re)
a.forEach(v => console.log(v, re.test(v)))
function reg(str) {
const a = []
const e = '[а-яё]'
for (let i = 0; i < str.length - 1; i++) {
for (let j = i + 1; j < str.length; j++) {
const s = str.split('')
s[i] = e
s[j] = e
a.push(s.join(''))
}
}
return new RegExp(a.join('|'), 'i')
}