gpt4 book ai didi

regex - 包含字母、数字和破折号的正则表达式,但没有前导或尾随破折号

转载 作者:行者123 更新时间:2023-12-02 04:50:01 24 4
gpt4 key购买 nike

在我的 ASP.NET MVC 项目中有一个正则表达式,用于验证包含字母数字字符和破折号的字符串,同时也不允许前导或尾随破折号:

^(([a-zA-Z0-9]{1,}?)(\-{0,}?)([a-zA-Z0-9]{1,}?))+$

这适用于大多数用例:

safename                (valid)
123 (valid)
there-is-something-here (valid)
your-name-goes-here (valid)
-something-is-up (invalid)
say-what- (invalid)

但是,有些用例我想要有效,但不是:

a-b                     (valid)
a-bc-d (valid)
ab-cd-e (valid)
a-bc-de (valid)
this-is-a-test (invalid)
a-b-c (invalid)
1-2-3 (invalid)

我可以有一个前导和/或尾随字符,但字符串的其余部分不能有一个字符。我希望 a-b-c1-2-3 有效,但我尝试过的任何修改都没有产生预期的结果。我对第一组和第三组做了一个小改动,但前导和尾随破折号通过了:

^(([a-zA-Z0-9]{0,}?)(\-{0,}?)([a-zA-Z0-9]{0,}?))+$

我已经达到了正则表达式的极限,希望得到任何指导。我正在寻找的结果是否可以通过单个表达式实现?

最佳答案

你可能会使用这样的东西:

^[a-zA-Z0-9]+(?:--?[a-zA-Z0-9]+)*$

如果您只想在每个字母数字字符之间使用一个破折号。否则,将 - 变为 -+ 以获得多个破折号。

关于regex - 包含字母、数字和破折号的正则表达式,但没有前导或尾随破折号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19034238/

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