Javascript 计算正则表达式中的最大字符数
例如,我们有以下正则表达式:Javascript 计算正则表达式中的最大字符数,javascript,regex,Javascript,Regex,例如,我们有以下正则表达式: /^[a-z]{1,10}-[0-9]{10}$/ 此正则表达式允许我们最多输入21个字符 有没有一种简单的方法可以获取JavaScript中允许的最大字符数?不,你不能 如果使用“?”或“+”或“*”,则无法猜出匹配的字符数。什么数字,输入值?更多问题,可能是正则表达式中的正则表达式。首先,你认为简单的表达式是a+?那(?:a{2}){4}呢?我想你需要一个语法分析器,答案是否定的!要获得正则表达式允许的字符数,没有简单的方法,最简单的方法是构造一个循环,以不断
/^[a-z]{1,10}-[0-9]{10}$/
此正则表达式允许我们最多输入21个字符
有没有一种简单的方法可以获取JavaScript中允许的最大字符数?不,你不能
如果使用“?”或“+”或“*”,则无法猜出匹配的字符数。什么数字,输入值?更多问题,可能是正则表达式中的正则表达式。首先,你认为简单的表达式是
a+
?那(?:a{2}){4}
呢?我想你需要一个语法分析器,答案是否定的!要获得正则表达式允许的字符数,没有简单的方法,最简单的方法是构造一个循环,以不断增加的字符数测试正则表达式,直到它失败。@Bergi-没有想到,你必须知道正则表达式在长度为1时会失败,然后你就完蛋了,因为你必须用你的眼睛阅读正则表达式或解析它才能知道这一点,所以除非你知道正则表达式的功能,否则自动化是不可行的,如果你能阅读它并看到它的功能,那么为什么你需要测试它呢?他想要的是可以匹配的最大字符数。所以max('a?')是1
,max('a+')是无限的
,max('a*)也是无限的
你的例子很简单。幸运的是,我们编写了一个函数,当它不是无限大时,它将计算最大字符数