Вот код на C#, который выполняет проверку, содержит ли строка числа из заданного списка:
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
static void Main()
{
List numbersList = new List { 55, 78, 83 };
string inputString = "аолаащо74028оалащатз69055.8-&;55)/@83@(&\"0,04978&\"/78";
bool containsOnlyAllowedNumbers = CheckStringAgainstList(inputString, numbersList);
Console.WriteLine(containsOnlyAllowedNumbers); // Вывод: False
string allowedString = "аолаащооалащатз55.-&;55)/@83@(&\"\"/78";
bool allowedResult = CheckStringAgainstList(allowedString, numbersList);
Console.WriteLine(allowedResult); // Вывод: True
}
static bool CheckStringAgainstList(string input, List allowedNumbers)
{
string allowedNumberPattern = string.Join("|", allowedNumbers);
Regex regex = new Regex($"\\b({allowedNumberPattern})\\b");
return regex.Matches(input).Count == allowedNumbers.Count;
}
}
В метод CheckStringAgainstList мы создаем регулярное выражение на основе чисел из списка. Затем используем Regex.Matches для нахождения всех соответствий в строке. Если количество найденных совпадений равно количеству чисел в списке, то функция возвращает true, иначе - false.