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

时间:2016-09-10 14:19:27

标签: javascript php regex

我正在研究一个RegEx,其中我想要在13的总长度中出现任意数量的空格和任意数量的数字。像

'           12'

'       115678'

当前正则表达式:

(^\s*\d[0-9]{1,12})$

如何使用块

获取此变量

3 个答案:

答案 0 :(得分:0)

您可以使用character class

最多允许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 :(得分:0)

由于要满足两个条件: -

  1. 出现任何空格后出现任何数字
  2. 总长度为13
  3. 使用正面预测正则表达式: -

    /(?=^\s*\d*$)(^.{13}$)/
    

    访问此处了解更多有关积极展望正则表达式的信息: -

    Regex lookahead, lookbehind and atomic groups

    希望这有帮助。

答案 2 :(得分:-1)

你可以使用一个非常丑陋且效率低下的正则表达式:

^\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。