我想匹配字符串中的符号@。如果它位于字符串的开头,中间或末尾或其内部的任何位置都没有关系。重要的是只匹配它0或1次。
我想到了这样的事情:
^[^@]*@[^@]*$
但绝对不行,因为即使它与符号@匹配一次,它也只能在字符串内匹配。
@foobar Valid
foo@bar Valid
foobar@ Valid
fooba@r Valid
但是
@@foobar Invalid
@foo@bar Invalid
foo@b@ar Invalid
答案 0 :(得分:3)
您可以使用以下正则表达式:
^[^@]*@[^@]*$
禁止在输入字符串中包含多个@
。
<强>测试:强>
https://regex101.com/r/H4hXF5/1
如果您还需要匹配不包含@
的字符串,请在正则表达式后面添加?
:
^[^@]*@?[^@]*$
这也将匹配字符串abc
,例如
<强>解释强>
^
行首[^@]*
然后除@
之外的所有字符都采用0到N次@
然后一个@
字符[^@]*
与step2相同$
行的结尾?
让角色变为可选角色