gpt4 book ai didi

正则表达式匹配字符串中任意位置的一个字符一次

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

我想匹配字符串中的符号@。它是在字符串的开头、中间、结尾还是字符串内部的任何位置都没有关系。重要的是只匹配它 0 或 1 次。

我想到了这样的事情:

^[^@]*@[^@]*$

但绝对不行,因为即使它匹配符号@一次,它也只能在字符串内部匹配它。

@foobar Valid
foo@bar Valid
foobar@ Valid
fooba@r Valid

但是

@@foobar Invalid
@foo@bar Invalid
foo@b@ar Invalid

最佳答案

您可以使用以下正则表达式:

^[^@]*@[^@]*$ 

禁止在输入字符串中包含多个@

测试:

https://regex101.com/r/H4hXF5/1

如果您还需要匹配其中没有 @ 的字符串,请在正则表达式中紧跟其后添加一个 ?:

^[^@]*@?[^@]*$

这也将匹配字符串 abc 例如

解释:

  • ^行首
  • [^@]* 然后除@之外的所有字符取0到N次
  • @ 然后是一个 @ 字符
  • [^@]*同step2
  • $ 行尾
  • ? 在字符变为可选之前拥有该字符

关于正则表达式匹配字符串中任意位置的一个字符一次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48365995/

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