Regex表示有限的数字,不限的中间短划线
Regex for limited numbers, unlimited middle dashes?
用户可以填写电话号码。(只有数字和破折号,破折号不是强制性的)
他可以有尽可能多的(中间)短划线(-
),但的总位数必须为10。
我已经成功地编写了一个正则表达式,使用数字中"-"
的正向前瞻:
^(?=.*'-)[0-9'-]+$
但我有两个问题:
-
破折号(在我的正则表达式中)也可以在开头和结尾,这是无效的。
-
我没有成功应用10位数的限制。
p.s.有效示例:
050-6783828
050-678-38-28
0506783828
无效:
-0506783826
0506783826-
050678--3826
请注意,这个问题被标记为regex。我不是在寻找js(非正则表达式)解决方案
我想你想要这样的东西:
^'d(?:-?'d){9}$
- 以数字开头
- 9次:可选破折号和另一位数字
工作示例:http://rubular.com/r/CrgTOrXC8E
^[0-9](-?[0-9]){8}-?[0-9]$
起始和结束处的一个数字,8组可选短划线和数字,加上最后一个数字前的可选短划线
两个相邻数字之间只允许有一个短划线。
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'))
相关文章:
- 通过单击表单中的按钮,在代码生成中使用javascript生成字母数字代码
- 测试索引值是否等于某个数字的倍数
- 将数字转换为一定数量的硬币
- 键入最后一位数字后自动提交
- 如何在javascript中迭代数字列表
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- Javascript逻辑运算符和字符串/数字
- 如何在javascript中获得与特定数字相等的随机数
- 如果元素's的ID以数字开头
- 递增一个数字而不去掉前导零
- 如何使用JavaScript查找1和N之间的所有数字的总和
- 如何在这里将两个值最低的数字相加
- 创建一个中间带有随机数字的球(html画布和javascript)
- 找出两个日期之间的星期天的数字,如果星期天在两个日期中间,则减去星期天
- 如何从字符串中间解析数字
- Regex只接受字母数字,除了在中间的一个连字符
- 如何删除字符串中间数字的最后一位数字
- 如何在javascript中有效地匹配字符串中间的数字
- 在url中间添加数字
- Regex表示有限的数字,不限的中间短划线