例如,如果我有一个字符串:
0123456789
我可以写出如下的表达式:0.*9 WHERE PATTERN MAX SIZE is 3。
在这种情况下,模式应该失败。0123456789
我可以写出如下的表达式:0.*9 WHERE PATTERN MAX SIZE is 3。
在这种情况下,模式应该失败。/^0.?9$/
你抽象问题的通用解决方案是:
/^(?=.{0,3}$)0.*9$/
(?=.{0,3}$)
是一个先行断言,表示字符串的剩余部分长度在0到3之间。x{min,max}
将匹配x出现min到max次。
x{min,}
将匹配至少出现min次的x。
x{,max}
将匹配最多出现max次的x。
x{n}
将恰好匹配n次的x。
所有范围都是包括在内的。
快捷方式:{0,1}
=> ?
, {0,}
=> *
, {1,}
=> +
。
我不确定这是否完全符合您的需求,但它应该有助于构建您的正则表达式。
例如:^0\d{,3}9$
将匹配由0开头、9结尾并且最多有5个数字的字符串。匹配项:0339
,06319
,09
。不匹配: 033429
,1449
。
\d{0,3}
。 - atomizer^0\d?9$
这样的东西,但不知道如何询问 :). - Alin Purcaru听起来你想要程序化地修改正则表达式。
请指定您使用的语言(JS、Python、PHP 等)。
以下是使用 JavaScript 实现的方法:
sYourPattern = '0.*9';
iPatternMaxSize = 3;
zRegex = new RegExp ('^(?=.{0,' + iPatternMaxSize + '}$)' + sYourPattern + '$');
alert (zRegex.test ('09') );
这将返回:
'9' --> 不匹配 '09' --> 匹配 '009' --> 匹配 '0009' --> 不匹配 '19' --> 不匹配