我正在尝试为Flex程序找到一个正则表达式,该正则表达式将匹配“字符串”和[A-E]
范围内的字母序列。
我要尝试做的事情是,输入具有[string]且[A-E]范围内存在1或2或4或4个以上的字母。** << / p>
到目前为止,我尝试过的是正则表达式:"string "([A-E]{1,2}|[A-E]{4,})
字母在{4,}范围内的情况显然有效,但是情况下{1,2}则无效,因为如果用户在输入“ string” ABC中输入,它将调用情况[AE] {1,2 }。
我考虑过使用带有NOT运算符的正则表达式,其方式类似于:"string "(NOT OPERATOR)([A-E]{3})
,这样,我会得到在每种情况下,“字符串”后跟其他3个字母的情况,但结果变成没有这样的运算符。
我该怎么解决这个问题?
在此先感谢您的回答!
答案 0 :(得分:0)
您的regex
差不多可以了,只需强制下一个字母不在您的组中,以防止出现ABC
问题:
"string "([A-E]{1,2}|[A-E]{4,})[^A-E]
如果这是字符串的结尾,则还需要检查它:
"string "([A-E]{1,2}|[A-E]{4,})([^A-E]|$)
答案 1 :(得分:0)
是的,字符串“ ABC”与[A-E]{1,2}
匹配,因为您不坚持认为这些字母是指定字符串中仅 的东西(因此,“ AB”匹配且“ C ”只是因为其他一些原因而陷入其中。您应该坚持认为,完成正则表达式后,您已经到达了行/字符串的结尾:
^string ([A-E]{1,2}|[A-E]{4})$
或至少某种单词边界:
string ([A-E]{1,2}|[A-E]{4})\b