用户可以填写电话号码。 (只有数字和破折号,破折号不是强制性的)
他可以拥有尽可能多的(中间)短划线(-
),但的总位数必须为10。
I've managed使用数字"-"
的正向前瞻来编写正则表达式:
^(?=.*\-)[0-9\-]+$
但我有两个问题:
短划线(在我的正则表达式中)也可以在开头和结尾处,无效。
我没有成功应用10位数限制。
P.S。 有效示例的示例:
050-6783828
050-678-38-28
0506783828
不有效:
-0506783826
0506783826-
050678--3826
p.s.2请注意此问题被标记为正则表达式。我不是在寻找js(非正则表达式)解决方案。
答案 0 :(得分:8)
答案 1 :(得分:2)
^[0-9](-?[0-9]){8}-?[0-9]$
开头和结尾的数字,8组可选的短划线和数字,加上前一个数字之前的可选短划线
在eatch相邻数字之间只允许使用一个破折号。
var pat = new RegExp('^[0-9](-?[0-9]){8}-?[0-9]$')
// correct
console.log(pat.test('0506783828'))
console.log(pat.test('0-5-0-6-7-8-3-8-2-8'))
// incorrect
console.log(pat.test('0506783828-'))
console.log(pat.test('-0506783828'))
console.log(pat.test('05--06783828'))