求一个关于密码验证的正则表达式,想了好久都找不到简短的解决方案 要写一个正则表达式,用js验证一个字符串要满足如下三个条件:1.该字符串只能包括字母和数字,2.至少有一个字母和一个数字3.整个字符串长度在6到18,只能写成一个正则表达式 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 还算有一种方案,我想出来的,但很长,如下:^[a-zA-Z]\d[a-zA-Z0-9]{4,16}$|^[a-zA-Z][a-zA-Z0-9]\d[a-zA-Z0-9]{3,15}$|^[a-zA-Z][a-zA-Z0-9]{2}\d[a-zA-Z0-9]{2,14}$|^[a-zA-Z][a-zA-Z0-9]{3}\d[a-zA-Z0-9]{1,13}$|^[a-zA-Z][a-zA-Z0-9]{4}\d[a-zA-Z0-9]{0,12}$|^[a-zA-Z][a-zA-Z0-9]{5}\d[a-zA-Z0-9]{0,11}$|^[a-zA-Z][a-zA-Z0-9]{6}\d[a-zA-Z0-9]{0,10}$|^[a-zA-Z][a-zA-Z0-9]{7}\d[a-zA-Z0-9]{0,9}$|^[a-zA-Z][a-zA-Z0-9]{8}\d[a-zA-Z0-9]{0,8}$|^[a-zA-Z][a-zA-Z0-9]{9}\d[a-zA-Z0-9]{0,7}$|^[a-zA-Z][a-zA-Z0-9]{10}\d[a-zA-Z0-9]{0,6}$|^[a-zA-Z][a-zA-Z0-9]{11}\d[a-zA-Z0-9]{0,5}$|^[a-zA-Z][a-zA-Z0-9]{12}\d[a-zA-Z0-9]{0,4}$|^[a-zA-Z][a-zA-Z0-9]{13}\d[a-zA-Z0-9]{0,3}$|^[a-zA-Z][a-zA-Z0-9]{14}\d[a-zA-Z0-9]{0,2}$|^[a-zA-Z][a-zA-Z0-9]{15}\d[a-zA-Z0-9]{0,1}$|^[a-zA-Z][a-zA-Z0-9]{16}\d$|^\d[a-zA-Z][a-zA-Z0-9]{4,16}$|^\d[a-zA-Z0-9][a-zA-Z][a-zA-Z0-9]{3,15}$|^\d[a-zA-Z0-9]{2}[a-zA-Z][a-zA-Z0-9]{2,14}$|^\d[a-zA-Z0-9]{3}[a-zA-Z][a-zA-Z0-9]{1,13}$|^\d[a-zA-Z0-9]{4}[a-zA-Z][a-zA-Z0-9]{0,12}$|^\d[a-zA-Z0-9]{5}[a-zA-Z][a-zA-Z0-9]{0,11}$|^\d[a-zA -Z0-9]{6}[a-zA-Z][a-zA-Z0-9]{0,10}$|^\d[a-zA-Z0-9]{7}[a-zA-Z][a-zA-Z0-9]{0,9}$|^\d[a-zA-Z0-9]{8}[a-zA-Z][a-zA-Z0-9]{0,8}$|^\d[a-zA-Z0-9]{9}[a-zA-Z][a-zA-Z0-9]{0,7}$|^\d[a-zA-Z0-9]{10}[a-zA-Z][a-zA-Z0-9]{0,6}$|^\d[a-zA-Z0-9]{11}[a-zA-Z][a-zA-Z0-9]{0,5}$|^\d[a-zA-Z0-9]{12}[a-zA-Z][a-zA-Z0-9]{0,4}$|^\d[a-zA-Z0-9]{13}[a-zA-Z][a-zA-Z0-9]{0,3}$|^\d[a-zA-Z0-9]{14}[a-zA-Z][a-zA-Z0-9]{0,2}$|^\d[a-zA-Z0-9]{15}[a-zA-Z][a-zA-Z0-9]{0,1}$|^\d[a-zA-Z0-9]{16}[a-zA-Z]$不知道哪位大侠有更好的方案 /(?=.*\d)(?=.*[a-zA-Z])^[a-zA-Z\d]{6,18}$/ <script>function check(str){ //var reg=/(?!(?!\d+)\d|(?![a-zA-Z]+)[a-zA-Z])[0-9a-zA-Z]{6,18}/g; var reg=/^\d(?=[0-9a-zA-Z]*[a-zA-Z][0-9a-zA-Z]*)[0-9a-zA-Z]{5,17}|[a-zA-Z](?=[0-9a-zA-Z]*\d[0-9a-zA-Z]*)[0-9a-zA-Z]{5,17}$/g alert(reg.test(str));}</script><input onblur="check(this.value);"/>你再测试下看看,可能还有问题。 var s=/(?=.*\d)(?=.*[a-zA-Z])^[a-zA-Z\d]{6,18}$/;alert(s.test("111111111111111e"));显示false你怎么测的? 显示false?我显示true 我怀疑和IE版本号有关系,我的是IE6,你的呢? 用IE6测试/(?=.*\d)(?=.*[a-zA-Z])^[a-zA-Z\d]{6,18}$/"11111a1234" false"11111a12345" true改成 /^\d(?=.*[a-zA-Z])[a-zA-Z\d]{6,18}$/ 也是一梓,明显是IE6的预搜索实现有问题。前阵子才在主页看到说中国仍然大量使用IE6,是否在网页中都不能使用预搜索了? ie的预查和量词是有bug的实际上这里的{6,18}量词它是从预查里的lastIndex开始计算的。就是a这个位置前面的那个位置,所以显然是false。针对这个问题,可以变通解决。虽然说看着山寨,但是可以用如下。/^(?=[a-zA-Z0-9]{6,18}$)(?=.*[0-9])(?=.*[a-zA-Z])///demojavascript:alert(function (regex) { return regex.test('11111a1234') && regex.test('11111a12345') }(/^(?=[a-zA-Z0-9]{6,18}$)(?=.*[0-9])(?=.*[a-zA-Z])/));还有在ff某版本中,\d也是有差异的,那个版本\d支持的是unicode的就是说全角的数字也是支持的沉入 Ext问题 JSP购物车(SQLserver版) 文本框循环判断 提交的问题 大侠帮忙啊 落难菜鸟 input中值得判断 请教js读取数组的问题 菜鸟的小问题,帮帮忙 关于一个函数同时验证多个表单问题! 如何清空file 对象的内容 FCKEditor编辑器取值问题 帮我看看,应该如何改?
function check(str){
//var reg=/(?!(?!\d+)\d|(?![a-zA-Z]+)[a-zA-Z])[0-9a-zA-Z]{6,18}/g;
var reg=/^\d(?=[0-9a-zA-Z]*[a-zA-Z][0-9a-zA-Z]*)[0-9a-zA-Z]{5,17}|[a-zA-Z](?=[0-9a-zA-Z]*\d[0-9a-zA-Z]*)[0-9a-zA-Z]{5,17}$/g
alert(reg.test(str));
}
</script>
<input onblur="check(this.value);"/>
你再测试下看看,可能还有问题。
alert(s.test("111111111111111e"));
显示false
你怎么测的?
我显示true
"11111a1234" false
"11111a12345" true改成 /^\d(?=.*[a-zA-Z])[a-zA-Z\d]{6,18}$/ 也是一梓,明显是IE6的预搜索实现有问题。前阵子才在主页看到说中国仍然大量使用IE6,是否在网页中都不能使用预搜索了?
实际上这里的
{6,18}
量词
它是从预查里的lastIndex开始计算的。
就是
a这个位置前面的那个位置,所以显然是false。针对这个问题,可以变通解决。
虽然说看着山寨,但是可以用如下。/^(?=[a-zA-Z0-9]{6,18}$)(?=.*[0-9])(?=.*[a-zA-Z])///demo
javascript:alert(function (regex) { return regex.test('11111a1234') && regex.test('11111a12345') }(/^(?=[a-zA-Z0-9]{6,18}$)(?=.*[0-9])(?=.*[a-zA-Z])/));
还有在ff某版本中,\d也是有差异的,那个版本\d支持的是unicode的就是说全角的数字也是支持的沉入