/^1\d{10}$/
上面的正则是匹配1开头的11位手机号,我现在有一个原生的input,想控制只允许上面的输入,怎么实现?
<input name="mobile" onkeyup="value=value.replace(/^1\d{10}$/,'')">
网上有这样写的,但里面的那个正则,如何取反呢?
/^1\d{10}$/
上面的正则是匹配1开头的11位手机号,我现在有一个原生的input,想控制只允许上面的输入,怎么实现?
<input name="mobile" onkeyup="value=value.replace(/^1\d{10}$/,'')">
网上有这样写的,但里面的那个正则,如何取反呢?
可以采用分组匹配,第一组固定为号码格式,第二组匹配任意字符串,然后只保留第一组:
'1100645271312345abc莫等闲'.replace(/(^1\d{10})(\S*)/, '$1');
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
[^\d]
非数字的不要^[^1]
不是1
开头的不要(\d{10})
10个连续数字分组\d
1+10位数后的数字函数部分:
onkeyup
只能监听弹起,为避免用数长按不放还需要监听onkeydown
replace
回调函数中,先判断是否有满足\d{10}
连续10位数的,有的话,不管怎样直接返回1+$1
,也就是1和剩余10位\d{10}
在最后)目前测试通过的情况有以下几点:
如果还有其他情况的话,就自己试着加逻辑吧