我正在研究一个RegEx,其中我想要在13的总长度中出现任意数量的空格和任意数量的数字。像
' 12'
或
' 115678'
当前正则表达式:
(^\s*\d[0-9]{1,12})$
如何使用块
获取此变量答案 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!';
}
非正则表达式javascript:
var string = ' 111578';
if(string.length <= 13 && !isNaN(string.trim())) {
alert('good');
} else {
alert('bad')
}
答案 1 :(得分:0)
由于要满足两个条件: -
使用正面预测正则表达式: -
/(?=^\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。