即使有空格,我也需要一个正则表达式将数字数字限制为10.
例如,它允许06 15 20 47 23
与0615204723
相同。
我尝试过:^\d{10}$
,但如何忽略空格?
此外,该号码应以06
或07
开头。 (编者注:最后一项要求来自OP的评论。)
答案 0 :(得分:6)
这将在大多数正则表达式系统中执行。 (你需要说明你正在使用的语言!)
/^\s*(0\s*[67]\s*(?:\d\s*){8})$/
但假设你真的只想要这个数字,那就继续把它分成两步。
例如,在JavaScript中:
var s = ' 06 15 20 47 34 ';
s = s.replace (/\s/g, "");
isValid = /^0[67]\d{8}$/.test (s);
答案 1 :(得分:2)
你可以这样做:
"^(\d *){10}$"
答案 2 :(得分:1)
我有同样的问题,我注意到如果我将每个数字分组,前后填充任意数量的空格,我得到了我正在寻找的解决方案。在此示例中,忽略所有空格
^(\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
答案 3 :(得分:0)
稍微好一点:
"^\s?(\d\s?){10}$"
其中\ s是任何空格,\ d是数字。这允许前导以及固定和尾随空格。
答案 4 :(得分:0)
(\s*\d\s*){0,10}
这应允许数字周围的前导和尾随空格,并匹配0到10位数。
答案 5 :(得分:0)
var str = " a b c d e f g ";
var newStr = str.replace(/\s+/g, '');