Алгоритм выдачи доставки

Мне нужно получить унаследованный класс DispenseAlgorithm. Должен реализован алгоритм расчета выдачи доставки. Алгоритм должен обеспечивать равномерное потребление номиналов.

public abstract class DispenseAlgorithm
{
       public abstract Dictionary CalculateDispense(CassetteData[] data, int summ);
}

public class CassetteData
{
       public int UID { get; set; }
       public int Nominal { get; set; }
       public int Count { get; set; }

       public CassetteData() { }
}

Класс CassetteData - предоставляет информацию о наборе номиналов в текущее время (Nominal - значение номинального номинала, Count - количество номиналов, UID - уникальный идентификатор набора номиналов).

Метод CalculateDispense имеет 2 параметра: - доступно в текущем наборе деноминации времени (данные CassetteData {]) - сумма, которую мы выплачиваем (или выдаем) в качестве кешбека.

Метод CalculateDispense должен возвращать объект Dictionary, где key - уникальный идентификатор набора деноминации, а value - количество деноминации, необходимое для оплаты.

Желаемый результат: деноминация должно заканчиваться как можно более равномерно на некоторых сеансах выдачи родов

Например: s Улучшенный либеральный шаблон точного регулярного выражения для сопоставления URL-адресов с одним из моих Javascripts, но инспектор WebKit (в Google Chrome 5.0.375.125 для Mac) выдает ошибку синтаксиса регулярного выражения «Недопустимая группа».

Исходное регулярное выражение Грубера выглядит следующим образом:

(?i)\b((?:[a-z][\w-]+:(?:/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))

Строка из моего JavaScript с регулярным выражением выглядит следующим образом (с косой чертой, обратной косой чертой):

tweet_text = tweet_text.replace(/(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi, '$1');

А ошибка Google Chrome (V8?) Выглядит следующим образом:

Uncaught SyntaxError: Invalid regular expression: /(?i)\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/: Invalid group

И ошибка Safari заключается в следующем:

SyntaxError: Invalid regular expression: unrecognized character after (?

Он утверждает, что он должен работать в современных интерпретаторах регулярных выражений JavaScript, что, как я полагаю, будет в WebKit & V8. Разве синтаксис регулярных выражений JavaScript не поддерживает (?: (черт возьми, Google не индексирует пунктуацию! ) синтаксис группировки? Я просто что-то пропустил?

7
задан morgant 24 August 2010 в 18:19
поделиться

1 ответ

Ага, это был модификатор режима (т.е. (? I) ) в начале регулярного выражения!

Я просмотрел данные Regular-Expressions.info о «Вкус регулярных выражений JavaScript» , в частности, список того, что не поддерживается, и был «модификатор режима», который Я уже указывал после закрывающей косой черты регулярного выражения. Вырвал все вроде хорошо.

Итак, мое регулярное выражение JavaScript теперь выглядит следующим образом:

/\b((?:[a-z][\w-]+:(?:\/{1,3}|[a-z0-9%])|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\(([^\s()<>]+|(\([^\s()<>]+\)))*\))+(?:\(([^\s()<>]+|(\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:'".,<>?«»“”‘’]))/gi
15
ответ дан 6 December 2019 в 13:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: