我想要一个可以匹配字符串%*---
并且至少有一个连字符的正则表达式,但是如果有超过3个连字符,则表达式不应该匹配。![在此处输入图像描述] [1]
到目前为止,我已经提出/^%?\*{1}\s*(\- *){1,3}/
但是当连字符超过3时它仍然匹配。
我也在?
范围之后尝试了{1,3}
,但它不符合要求。
答案 0 :(得分:3)
虽然它在教程和参考文献中经常被写为{min,max}
,但枚举量词并不意味着不超过max
。如果它看到三个连字符,-{1,3}
将消耗所有三个连字符,但它并不关心下一个字符是什么(如果有的话)。就像这方面的所有其他量词一样:它尽可能多地消耗,然后将控制权交给正则表达式的下一部分。
这就是其他响应者建议使用结束锚($
)的原因。如果您无法使用锚点,或者不想使用锚点,则可以使用否定前瞻:
/^%\*-{1,3}(?!-)/
答案 1 :(得分:0)
答案 2 :(得分:0)