С регулярным выражением это довольно просто, вопросительный знак обозначает необязательный символ.
let pattern = "V«?003»?"
NSPredicate(format: "id MATCHES %@", pattern)
Edit:
чтобы исправить ввод пользователя, я добавил «?»?
между каждым вводимым пользователем символом:
func generatePattern(item: String) -> String {
var str = ""
for st in item {
str.append(contentsOf: "«?»?")
str.append(st)
}
str.append(contentsOf: "«?»?")
return String(str)
}