将"最大长度"添加到正则表达式

SeT*_*ToY 7 c# regex

如何使用一个属性来扩展已经存在的正则表达式,该属性告诉正则表达式不能超过(假设)255的最大长度?

我有以下正则表达式:

([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)

我试过这样,但失败了:

{.,255([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)}

Fir*_*Dib 12

如果它必须是一个完全基于正则表达式的解决方案,最好的方法就是使用外观.

查看此示例:http://regex101.com/r/yM3vL0

我在这里做的只是匹配最多三个字符长的字符串.当然,对于我的例子,这不是最好的方法.但忽略这一点,我只是想展示一个适合你的例子.

您还必须锚定您的模式,否则引擎将忽略该环视(我是否必须深入解释这一点?)

换句话说,您可以在正则表达式中使用以下内容将其限制为最多255个字符:

^(?!^.{256})([a-zA-Z0-9_\-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([a-zA-Z0-9\-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)
Run Code Online (Sandbox Code Playgroud)

我也觉得有责任告诉你,你的正则表达很糟糕,你应该感觉很糟糕.