我试图编写一个正则表达式来匹配由垂直线分隔的一组单词,这些单词应该只在字符串中出现一次。 E.g。
mode1|mode2|mode3
但它不符合:
mode1|mode2|mode2
mode1|
mode1|mode1
mode1|any_other_word
到目前为止,我已写过
^(?:(mode1|mode2|mode3)\|?)*(?!(?:mode1|mode2|mode3)\1)$
我相信它足够接近理想的结果。但我不能使正则表达式与之前发生的单词不匹配,例如:
mode1|mode2|mode3|mode2
答案 0 :(得分:2)
由于您正在使用XSD,因此您应该使用枚举而不是正则表达式来描述预期值:
<xs:simpleType name="modeString"> <xs:restriction base="xs:string"> <xs:enumeration value="mode1"/> <xs:enumeration value="mode2"/> <xs:enumeration value="mode3"/> </xs:restriction> </xs:simpleType>
改编自 w3schools.com
(编辑删除我的低级正则表达式答案并专注于使用xsd枚举)。