正则表达式:有没有办法设置模式的最大大小?

时间:2010-11-19 08:05:06

标签: regex

例如,如果我有字符串:
0123456789

我会写这样的表达:
0.*9 WHERE PATTERN MAX SIZE is 3. in this case, pattern should fail.

3 个答案:

答案 0 :(得分:4)

x{min,max}将匹配最小和最大时间之间的x x{min,}将匹配x至少最少时间
x{,max}最多匹配x次 x{n}将完全匹配x次

所有范围都包含在内。

快捷方式:{0,1} => ?{0,} => *{1,} => +

我不确定这是否正是您所需要的,但它应该可以帮助您构建正则表达式。

示例:^0\d{,3}9$将匹配最多5个数字的字符串,从0开始,以9结尾。匹配:03390631909。不匹配:0334291449

答案 1 :(得分:4)

您示例的具体解决方案是:

/^0.?9$/

您抽象问题的一般解决方案是:

/^(?=.{0,3}$)0.*9$/

在上面的(?=.{0,3}$)中,预测字符串的其余部分的长度介于0和3之间。

答案 2 :(得分:1)

听起来你想以编程方式改变正则表达式。

请指定您使用的语言(JS,Python,PHP等)。

以下是使用JavaScript的方法:

sYourPattern    = '0.*9';
iPatternMaxSize = 3;

zRegex = new RegExp ('^(?=.{0,' + iPatternMaxSize + '}$)' + sYourPattern + '$');
alert (zRegex.test ('09') );


这给出了:

    '9'     --> No match
    '09'    --> Match
    '009'   --> Match
    '0009'  --> No match
    '19'    --> No match