我需要一个正则表达式来限制数字位数为10,即使有空格。例如,它允许06 15 20 47 23与0615204723相同。我尝试了:^\d{10}$,但是我如何忽略空格?此外,编号应以06或07开头。(编者注,最后一个要求来自OP的注解。)
06 15 20 47 23
0615204723
^\d{10}$
06
07
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);
mhd8tkvw2#
您可以:
"^(\d *){10}$"
vu8f3i0k3#
略好:
"^\s*(\d\s*){10}$"
其中\s是任何空格,\d是数字。这允许任何空格组的开头、中间和结尾。
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
dwthyt8l5#
(\s*\d\s*){0,10}
这应该允许数字前后有前导和尾随空格,并匹配0到10位数字。
6pp0gazn6#
var str = " a b c d e f g "; var newStr = str.replace(/\s+/g, '');
6条答案
按热度按时间kmbjn2e31#
这在大多数正则表达式系统中都可以做到(你需要说明你使用的是什么语言!)
但是假设你真的只想要这个数字,那么就继续把它分成2个步骤。
例如,在JavaScript中:
mhd8tkvw2#
您可以:
vu8f3i0k3#
略好:
其中\s是任何空格,\d是数字。这允许任何空格组的开头、中间和结尾。
ryevplcw4#
我遇到了同样的问题,我注意到如果我用任意数量的空格填充每个数字的前后,我得到了我正在寻找的解决方案。在本例中,忽略所有空格
在一个更复杂的示例中,这将忽略所有空格、短划线、圆括号和空格。
在这里测试它们,它将为您提供给定系统的代码:http://www.myregextester.com/index.php
dwthyt8l5#
这应该允许数字前后有前导和尾随空格,并匹配0到10位数字。
6pp0gazn6#