例如,如果我有字符串:
0123456789
我会写这样的表达:
0.*9 WHERE PATTERN MAX SIZE is 3. in this case, pattern should fail.
答案 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结尾。匹配:0339
,06319
,09
。不匹配:033429
,1449
。
答案 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