1

我有一个站点核心模板字段,我想将其限制为一个或多个或以下 guid。它们可以以任何顺序出现,并且将被管道分隔。

  • {7f05059e-4b4c-4d4d-bb39-1f57446719ef}
  • {57cb8e77-30cb-4dba-88bb-104cfea2e94f}
  • {c41ac6b6-a5c9-47f9-86c2-7db9e861e701}
  • {97133d89-36a1-4c28-9f30-4516eb469520}

到目前为止,我有这个正则表达式,但是如果输入了上述指南和分隔管道以外的任何其他文本,则需要失败。

[\|]?\{(7f05059e-4b4c-4d4d-bb39-1f57446719ef|57cb8e77-30cb-4dba-88bb-104cfea2e94f|c41ac6b6-a5c9-47f9-86c2-7db9e861e701|97133d89-36a1-4c28-9f30-4516eb469520)\}

我怎样才能按照描述的那样工作?

我正在使用 sitecore,所以我假设我们在这里使用 .net 正则表达式,但很难说:\

4

3 回答 3

1

您需要对表达式进行一些修改才能使其正常工作:

^(?:\||(?:\{(?:7f05059e-4b4c-4d4d-bb39-1f57446719ef|57cb8e77-30cb-4dba-88bb-104cfea2e94f|c41ac6b6-a5c9-47f9-86c2-7db9e861e701|97133d89-36a1-4c28-9f30-4516eb469520)\}))*$

我添加了锚点^$分别匹配行首和行尾。

我还在*整个分组中添加了 ,以支持同一行上的一个或多个 GUID。

正则表达式 101 演示

于 2013-11-14T14:40:30.847 回答
0

试试 ^(行开始)和 $(行结束)

于 2013-11-14T14:32:36.420 回答
0

这个怎么样:

^\{(7f05059e-4b4c-4d4d-bb39-1f57446719ef|57cb8e77-30cb-4dba-88bb-104cfea2e94f|c41ac6b6-a5c9-47f9-86c2-7db9e861e701|97133d89-36a1-4c28-9f30-4516eb469520)\}([\|]?\{(7f05059e-4b4c-4d4d-bb39-1f57446719ef|57cb8e77-30cb-4dba-88bb-104cfea2e94f|c41ac6b6-a5c9-47f9-86c2-7db9e861e701|97133d89-36a1-4c28-9f30-4516eb469520)\})*$

在这里,我添加了^and$来匹配字符串的开头和结尾。另外,我第一次重复了想要的字符串并将另一个放入一个组中。然后该组重复 0 到无限次。

^\([\|]?\{(7f05059e-4b4c-4d4d-bb39-1f57446719ef|57cb8e77-30cb-4dba-88bb-104cfea2e94f|c41ac6b6-a5c9-47f9-86c2-7db9e861e701|97133d89-36a1-4c28-9f30-4516eb469520)\})+$

这是一个较短的版本,但允许在字符串的开头有一个额外的管道。

于 2013-11-14T14:33:23.170 回答