我需要一些协助来修复我的正则表达式,该正则表达式应符合以下条件:
s
和仅s
f
和仅f
dn
和仅dn
35d
)
或任何带小数的数字
ss
无效,dnf
无效,305d
无效^(s|f|dn)|(\d{2}d)$
使我开始
sf
匹配,但不匹配。 答案 0 :(得分:0)
您的|
运算符正在吞噬您的锚点!根据{{3}},引擎将您的第一个替代项视为^(s|f|dn)
,将您的第二个替代项视为(\d{2}d)$
-因此s
是有效的匹配项,因为没有任何必要说在字符串的末尾。
请尝试将您的条款限制在一个非捕获组中,以确保|
操作员不会碰到您的锚点:^(?:(s|f|dn)|(\d{2}d))$
应该有效; this code sample,似乎同意。
我还看到一条注释,您希望任何十进制数字都有效。为此,您的正则表达式为:^(?:(s|f|dn)|(\d{2}d)|(\d+\.\d+))$
-this sample