Outlook 上下文插件无法使用正则表达式找到加号
Outlook contextual addin can't find PLUS sign with regex
我的规则是这样的
<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
(我的真实正则表达式不止于此,但这个示例足以重现该问题)
搜索似乎有效,因为它 returns 结果,但我在开发控制台中看到错误并且没有突出显示。
我的猜测是 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)
我没有在 office 插件开发网站上找到任何文档 if/how 我应该避开这些吗?有什么想法吗?
恕我直言,这似乎是 Outlook 阅读窗格中的错误。它似乎将正则表达式在清单中找到的内容传递给另一个正则表达式,该正则表达式负责在阅读窗格(使用 markjs)中突出显示匹配项作为正则表达式模式。这是我在 markElements.ts
文件中看到的内容,keyword
是在电子邮件正文中找到的实际字符串:
我的规则是这样的
<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
(我的真实正则表达式不止于此,但这个示例足以重现该问题)
搜索似乎有效,因为它 returns 结果,但我在开发控制台中看到错误并且没有突出显示。 我的猜测是 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)
我没有在 office 插件开发网站上找到任何文档 if/how 我应该避开这些吗?有什么想法吗?
恕我直言,这似乎是 Outlook 阅读窗格中的错误。它似乎将正则表达式在清单中找到的内容传递给另一个正则表达式,该正则表达式负责在阅读窗格(使用 markjs)中突出显示匹配项作为正则表达式模式。这是我在 markElements.ts
文件中看到的内容,keyword
是在电子邮件正文中找到的实际字符串: