regex 正则表达式要求10位数,不考虑空格

trnvg8h3  于 2022-12-24  发布在  其他
关注(0)|答案(6)|浏览(151)

我需要一个正则表达式来限制数字位数为10,即使有空格。
例如,它允许06 15 20 47 230615204723相同。
我尝试了:^\d{10}$,但是我如何忽略空格?
此外,编号应以0607开头。(编者注,最后一个要求来自OP的注解。)

kmbjn2e3

kmbjn2e31#

这在大多数正则表达式系统中都可以做到(你需要说明你使用的是什么语言!)

/^\s*(0\s*[67]\s*(?:\d\s*){8})$/

但是假设你真的只想要这个数字,那么就继续把它分成2个步骤。
例如,在JavaScript中:

var s = ' 06 15 20 47   34 ';
s = s.replace (/\s/g, "");
isValid = /^0[67]\d{8}$/.test (s);
mhd8tkvw

mhd8tkvw2#

您可以:

"^(\d *){10}$"
vu8f3i0k

vu8f3i0k3#

略好:

"^\s*(\d\s*){10}$"

其中\s是任何空格,\d是数字。这允许任何空格组的开头、中间和结尾。

ryevplcw

ryevplcw4#

我遇到了同样的问题,我注意到如果我用任意数量的空格填充每个数字的前后,我得到了我正在寻找的解决方案。在本例中,忽略所有空格

^(\s*\d\s*){10}$

eg. "1234567890"
    " 12  34 567   89 0    "

在一个更复杂的示例中,这将忽略所有空格、短划线、圆括号和空格。

^([\s\(\)\-]*\d[\s\(\)\-]*){10}$

eg. "(123)456-7890"
    "   (   12 (3)( - 45 - 6-78 )(90 (((--  "

在这里测试它们,它将为您提供给定系统的代码:http://www.myregextester.com/index.php

dwthyt8l

dwthyt8l5#

(\s*\d\s*){0,10}

这应该允许数字前后有前导和尾随空格,并匹配0到10位数字。

6pp0gazn

6pp0gazn6#

var str = " a b c d e f g "; 
var newStr = str.replace(/\s+/g, '');

相关问题