gpt4 book ai didi

regex - 匹配扁平属性名称的正则表达式

转载 作者:行者123 更新时间:2023-12-05 01:53:52 25 4
gpt4 key购买 nike

我有需要验证的特定扁平化属性名称。基本上,有效的是可以后跟数组索引(例如 [4])的字母数字字符串,但不一定是。如果后面跟着下一个词,则必须用点连接。

为了说明,一些有效的例子是:

parent[0].child
parent.child
parent.child1.list[0].child2
parent[500].child
parent0.child
par50ent.child
parent[0].child1[20].child[0]

还有一些无效的例子是

parent..child
parent[].child
parent[1a].child
parent[a].child
.parent
parent.

我对正则表达式了解不多,所以我想出了下面这行:

(([a-zA-Z0-9]{1,})(\[[0-9]{1,}\]){0,1}){1}((\.){1}([a-zA-Z0-9]{1,})(\[[0-9]{1,}\]){0,1}){0,}

虽然这确实有效,但它太冗长了。必须有更好、更短的方式来编写它。

最佳答案

您可以使用此正则表达式来仅匹配有效的情况:

^\w+(?:\[\d+])?(?:\.\w+(?:\[\d+])?)*$

RegEx Demo

正则表达式详细信息:

  • ^ : 开始
  • \w+ : 匹配1+个单词字符
  • (?:\[\d+])? : 匹配可选 [<digits>]部分
  • (?: : 启动一个非捕获组
    • \. : 匹配一个点
    • \w+(?:\[\d+])? : 匹配一个单词后跟可选的 [<digits>]
  • )* : 结束非捕获组。重复此组 0 次或更多次
  • $ : 结束

如果你想允许parent[0][1].child,你可以使用这个正则表达式还有:

^\w+(?:\[\d+])*(?:\.\w+(?:\[\d+])*)*$

关于regex - 匹配扁平属性名称的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70957914/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com