用于任意数量的空格或数字的RegEx,总长度为13


RegEx for any number of white spaces or digits, with a total length of 13

我正在研究一个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/

由于需要满足两个条件:-

  1. 空格后跟数字
  2. 总长度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。