gpt4 book ai didi

下划线或连字符的正则表达式模式,但不能同时使用

转载 作者:行者123 更新时间:2023-12-04 23:39:06 25 4
gpt4 key购买 nike

我有一个正则表达式,它允许一个字符串是独立的,由连字符和下划线分隔。

我需要帮助,所以字符串只需要连字符或下划线,而不是两者。

这是我到目前为止。

^([a-z][a-z0-9]*)([-_]{1}[a-z0-9]+)*$

foo = passed
foo-bar = passed
foo_bar = passed
foo-bar-baz = passed
foo_bar_baz = passed
foo-bar_baz_qux = passed # but I don't want it to
foo_bar-baz-quz = passed # but I don't want it to

最佳答案

您可以稍微扩展模式并使用反向引用来仅匹配相同的分隔符:

^[a-z][a-z0-9]*(?:([-_])[a-z0-9]+(?:\1[a-z0-9]+)*)?$

regex demo

详情 :
  • ^ - 字符串开头
  • [a-z][a-z0-9]* - 一个字母后跟 0+ 小写字母或数字
  • (?:([-_])[a-z0-9]+(?:\1[a-z0-9]+)*)? - 一个可选的序列:
  • ([-_]) - 捕获组 1 匹配 -_
  • [a-z0-9]+ - 1+ 个小写字母或数字
  • (?:\1[a-z0-9]+)* - 0+ 序列:
  • \1 - 与第 1 组相同的值
  • [a-z0-9]+ - 1 个或多个小写字母或数字
  • $ - 字符串的结尾。
  • 关于下划线或连字符的正则表达式模式,但不能同时使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43126784/

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