Контекстная надстройка Outlook не может найти знак PLUS с регулярным выражением

Мое правило выглядит так

<ExtensionPoint xsi:type="DetectedEntity">
  <Label resid="contextLabel" />
  <SourceLocation resid="testResId" />
  <Rule xsi:type="RuleCollection" Mode="And">
    <Rule xsi:type="RuleCollection" Mode="Or">
      <Rule xsi:type="ItemIs" ItemType="Message" />
      <Rule xsi:type="ItemIs" ItemType="Appointment" />
    </Rule>
    <Rule xsi:type="ItemHasRegularExpressionMatch" RegExName="Test" RegExValue="\+1" PropertyName="BodyAsPlaintext" Highlight="All"/>
  </Rule>
</ExtensionPoint>

как вы можете видеть, регулярное выражение ищет +1 для выделения (мое настоящее регулярное выражение делает больше, но этого примера достаточно, чтобы воспроизвести проблему)

Похоже, поиск работает, так как он возвращает результаты, но я вижу ошибки в консоли разработчика, и выделения не происходит. Я предполагаю, что Outlook использует фактические совпадения, чтобы выделить и поместить их в новое регулярное выражение (которое на самом деле не может начинаться со знака плюс). Исключение составляют:

constants.ts:1 Uncaught (in promise) SyntaxError: Invalid regular expression: /+1/: Nothing to repeat
    at new RegExp (<anonymous>)
    at constants.ts:1
    at Array.forEach (<anonymous>)
    at markElements.ts:54
    at AAQkADAzYTZlYTYyLWQyMGMtNDFhOS05MTAzLTQyYjJhNjBhMTYwZgAQAINoPf%2BPCdhNj6AVUpiXz4w%3D:347
    at Object.next (AAQkADAzYTZlYTYyLWQyMGMtNDFhOS05MTAzLTQyYjJhNjBhMTYwZgAQAINoPf%2BPCdhNj6AVUpiXz4w%3D:347)
    at a (AAQkADAzYTZlYTYyLWQyMGMtNDFhOS05MTAzLTQyYjJhNjBhMTYwZgAQAINoPf%2BPCdhNj6AVUpiXz4w%3D:347)

Я не нашел никакой документации на сайтах разработки офисных надстроек, если / как мне избежать их. Любая идея?


person kuzditomi    schedule 02.04.2020    source источник
comment
plus1 недопустимое регулярное выражение! Вам нужно экранировать \+, поскольку + в регулярном выражении - это специальный символ.   -  person BladeMight    schedule 02.04.2020
comment
@BladeMight, это не мой код, работающий до исключения, а Outlook. пожалуйста, проверьте мое опубликованное регулярное выражение, оно сбежало.   -  person kuzditomi    schedule 02.04.2020
comment
Попробуй двойное спасение.?   -  person BladeMight    schedule 02.04.2020
comment
Поскольку он заключен в двойные кавычки, возможно, вам сначала нужно экранировать сам "\": RegexValue="\\+1"?   -  person BladeMight    schedule 02.04.2020
comment
@BladeMight Если я дважды экранирую его, тоже не будет результата, поскольку косая черта вообще отсутствует в тексте.   -  person kuzditomi    schedule 02.04.2020
comment
затем поместите + в []   -  person BladeMight    schedule 02.04.2020
comment
@Blade Может быть, спасибо за догадку, но поскольку регулярное выражение возвращает что-то, начинающееся с плюса, оно перестает работать. Мне нужно выделить что-то, начинающееся с плюса. тем временем я попытался обойтись без включения 1 символа перед плюсом к выделению (чего я на самом деле не хочу!), как этот .\+1, но он либо не нашел текст, либо имел ту же ошибку.   -  person kuzditomi    schedule 03.04.2020


Ответы (1)


IMHO, похоже, это ошибка в области чтения Outlook. Кажется, что содержимое, найденное регулярным выражением в манифесте, передается другому регулярному выражению, которое отвечает за выделение совпадений в области чтения (с использованием markjs) в качестве шаблона регулярного выражения. Это то, что я вижу в файле markElements.ts, а keyword - это фактическая строка, найденная в теле письма:

markElements.ts

person György Balássy    schedule 07.04.2020
comment
да, у меня возникла проблема с github: github.com/OfficeDev/office-js/ issues / 1089 - person kuzditomi; 08.04.2020