我有一个sitecore模板字段,我想限制为一个或多个或以下guid。它们可以按任何顺序出现,并以管道分隔。
到目前为止,我有这个正则表达式,但如果输入除上述guid和分隔管之外的任何其他文本,则需要失败。
[\|]?\{(7f05059e-4b4c-4d4d-bb39-1f57446719ef|57cb8e77-30cb-4dba-88bb-104cfea2e94f|c41ac6b6-a5c9-47f9-86c2-7db9e861e701|97133d89-36a1-4c28-9f30-4516eb469520)\}
如何按照描述使其正常工作?
我正在使用sitecore,所以我假设我们在这里使用.net正则表达式,但很难说:\
答案 0 :(得分:1)
您需要对表达式进行一些修改才能使其正常工作:
^(?:\||(?:\{(?:7f05059e-4b4c-4d4d-bb39-1f57446719ef|57cb8e77-30cb-4dba-88bb-104cfea2e94f|c41ac6b6-a5c9-47f9-86c2-7db9e861e701|97133d89-36a1-4c28-9f30-4516eb469520)\}))*$
我添加了锚点^
和$
以分别匹配行尾和行尾。
我还在整个分组中添加了*
,以支持同一行中的一个或多个GUID。
答案 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)\})+$
这是一个较短的版本,但在字符串的开头允许额外的管道。