正则表达式将guid列表限制为特定选项

时间:2013-11-14 14:27:56

标签: regex sitecore sitecore6

我有一个sitecore模板字段,我想限制为一个或多个或以下guid。它们可以按任何顺序出现,并以管道分隔。

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

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

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

如何按照描述使其正常工作?

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

3 个答案:

答案 0 :(得分:1)

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

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

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

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

Regex101 Demo

答案 1 :(得分:0)

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

答案 2 :(得分: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)\})*$

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

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

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