我正在尝试编写一个可以满足以下条件的正则表达式。
^(aa|bb|cc)
. (dot)
或 @ (at)
--> ^(aa|bb|cc) [.@]
[a-zA-Z0-9_]
字符集或至少出现一个除.@
示例:
string | matched
----------------
aa.xya -> true
aa. -> false
aa -> false
--------
bb.@b -> false
bb@b -> true
bb.b -> true
---------
cc.bb. -> false
cc.bb@ -> false
cc.xz -> true
...
...
...
我需要一个包含所有状态的$PATTERN,那么我的$PATTERN应该是什么?
if [[ "$string" =~ $PATTERN ]]
你很接近了。
(aa|bb|cc)
和 [.@]
之间不应有空格。对于第三部分,使用 [^.@]+$` 匹配至少一个不在此字符集中的字符,一直到末尾。
^(aa|bb|cc)[.@][^.@]+$
在演示中,我在最后一部分添加了
\n
,因此它与换行符不匹配。如果 $string
只是一行,那对您的使用来说应该不重要。