我正在尝试这个正则表达式^[A-Za-z &-]+[A-Za-z]$
这允许这些字符串:
abc && abc
abc -- abc
abc &&-- abc
我想将其限制为一次只允许一个&
或-
,即abc & abc
。
它应该允许&
和-
,但不能同时允许fruits- apple & orange
。
答案 0 :(得分:2)
&
和-
只需将&
和-
移出其后面有+
的字符类:
^[A-Za-z ]+[&-][A-Za-z ]+$
(我在最后添加了一个+
并为最后一组添加了一个空格,因为你的例子在标点符号后面允许空格,在结尾处允许多个字母。)
这是一个更干净的版本,使用不区分大小写的标志:
/^[a-z ]+[&-][a-z ]+$/i
我发布此帖后你edited your question pretty significantly,完全改变了意思。要允许同时使用 &
和-
,但每次只有一次并且彼此不相邻,您必须获得更多创意,例如:
/^[a-z ]+([&-])[a-z ]+(?!\1)[&-][a-z ]+$/i
这允许第一次&
或-
(([&-])
),但仅允许第二次使用的那个。我们使用否定前瞻组来执行此操作:(?!\1)[&-]
。这是一个demo。