我正在研究一个RegEx,其中我想要任意数量的空格和任意数量的数字在13的总长度中出现。比如
' 12'
或
' 115678'
当前正则表达式:
(^'s*'d[0-9]{1,12})$
如何使用block获得这个变量的出现
一个字符类可以允许最多13个空格和/或数字:
^['t 'd]{1,13}$
如果white spaces
也包含新行,则使用's
元字符代替空格和't
。
^['s'd]{1,13}$
如果这是PHP,你可以使用'h
水平空白,Javascript不支持。
^['h'd]{1,13}$
一个演示(版本2):https://regex101.com/r/gZ9rA8/1
非正则PHP版本:
$string = ' 115678';
if(strlen($string) <=13 && is_numeric($string)) {
echo 'It''s GOOD!';
}
https://eval.in/639391 非正则表达式javascript:
var string = ' 111578';
if(string.length <= 13 && !isNaN(string.trim())) {
alert('good');
} else {
alert('bad')
}
演示:https://jsfiddle.net/h9mx0tmn/
由于需要满足两个条件:-
- 空格后跟数字
- 总长度13
像这样使用正向正向正则表达式:-
/(?=^'s*'d*$)(^.{13}$)/
访问这里获取更多关于正面展望的信息regex:-
Regex前向、后向和原子组
您可以使用一个巨大的丑陋且低效的正则表达式:
^'s{0}'d{13}|'s{1}'d{12}|'s{2}'d{11}|'s{3}'d{10}|'s{4}'d{9}|'s{5}'d{8}|'s{6}'d{7}|'s{7}'d{6}|'s{8}'d{5}|'s{9}'d{4}|'s{10}'d{3}|'s{11}'d{2}|'s{12}'d{1}$
我将建议不要这样做。相反,您应该这样做:根据正则表达式^'s{0,13}'d{0,13}$
检查字符串,然后在单独的步骤中验证其长度是否为13。