原文:js 正则之 判断密码类型

今天没啥写的,就分享个思路吧。
之前在群里讨论的时候,谢亮兄弟说判断密码是否是纯数字,纯字母之类的。
如果用 if 或者 switch 写看着确实蛋疼,如果有 , 条判断,那就老长一大段了。
这个思路是我之前看 jQuery 源码的时候学到的,感觉用在这也不错。
先来看代码吧。

function test(str, re, msg) {
var ret = str.match(re || /^(\d+)$|^([a-zA-Z]+)$|^([a-zA-Z].+)$|^([0-9a-zA-Z]+)$|^([\s\S]+)$/);
var msg = msg || ["", "纯数字", "纯字母", "字母开头+任意字符", "数字+字母任意组合", "未分类"];
var i = 0;
while (ret[++i] === undefined);
return msg[i];
} console.log(test("123"));
console.log(test("sss"));
console.log(test("123xx"));
console.log(test("a123xx"));
console.log(test("%$#@"));

可以看到利用一个正则和一个数组就完成了效验。
其实思路很简单,利用了正则的捕获组来对应数组里的字符。
/^(\d+)$|^([a-zA-Z]+)$|^([a-zA-Z].+)$|^([0-9a-zA-Z]+)$|^([\s\S]+)$/
可以拆分为

 /^(\d+)$/ 对应 "纯数字"
/^([a-zA-Z]+)$/ 对应 "纯字母"
/^([a-zA-Z].+)$/ 对应 "字母开头+任意字符"
/^([0-9a-zA-Z]+)$/ 对应 "数字+字母任意组合"
/^([\s\S]+)$/ 对应 "未分类"

如果对应的捕获组捕获到了,对应的分组下就会有值,如果没捕获到就会是 undefined
所以我们直接从  开始遍历结果集就可以得知是什么类型的了。

好了,今天分享就这些。

js 正则之 判断密码类型的更多相关文章

  1. cocos2d JS 使用代码判断对象类型

    changeAtlasScoreString : function (score,tfScore) { if(tfScore.getDescription() == "LabelAtlas& ...

  2. JS 中如何判断字符串类型的数字

    function isNumberStr(str){ var n = Number(str); return !isNaN(n); } console.log(isNumberStr('37')); ...

  3. 原生JS判断密码强弱

    前些天工作中有这个需求,自己手写了相关的JS代码,第一种方法是通过ASCII 码判断密码类型,完成用户注册时判断用户输入密码的强度,分强.弱.中三等级,它可以根据用户输入的密码显示对应的密码强弱等级, ...

  4. jS正则和WEB框架Django的入门

    JS正则 -test 判断字符串是否符合规定的正则表达式 -exec 获取匹配的数据 test的例子: 从上述的例子我们可以看出,如果rep.test匹配到了就返回true,否则返回false exe ...

  5. JS正则的补充,与其他前端组件的使用(easUi、jqueryUi、bootstrap、)

    1.JS 正则 test - 判断字符串是否符合规定的正则 rep = /\d+/; rep.test("asdfoiklfasdf89asdfasdf") # true rep ...

  6. js密码的校验(判断字符类型、统计字符类型个数)

    /** *判断字符类型 */ function CharMode(iN) { if (iN >= 48 && iN <= 57) //数字 return 1; if (iN ...

  7. JS正则密码复杂度校验之:JS正则匹配半角英文符号

    概述 在JS密码校验中常常会遇到密码强度的校验需求,借用一位朋友提问的图,他在工作中遇到的一个比较经典的密码强度校验要求: 这个需求有两个难点,一,是如何使用正则匹配所有半角英文标点符号,二,是如何验 ...

  8. JS正则密码复杂度校验之:至少有多种字符中的其中几种

    概述 续接上文的密码校验要求: 这个需求有两个难点,一,是如何使用正则匹配所有半角英文标点符号,二,是如何验证密码段中在要求的四种(大写字母,小写字母,数字,标点符号)类型中至少存在三种. 第一个难点 ...

  9. js判断undefined类型

    js判断undefined类型 if (reValue== undefined){    alert("undefined");    }  发现判断不出来,最后查了下资料要用ty ...

随机推荐

  1. SQL Server 连接问题-命名管道

    原文:SQL Server 连接问题-命名管道 出自:http://blogs.msdn.com/b/apgcdsd/archive/2011/01/12/sql-server-1.aspx 一.前言 ...

  2. netback于kthread遇到cpu affinity问题

    最近的升级netback, 在测试过程中,查找vm全双工压力,rx的pps波动很厉害,见rx kthread尽管cpu affinity它是0-7 (dom0 8vcpu), 但往往,她去了物理破坏c ...

  3. MapXtreme DJ最短路径算法 全路径搜索算法

    包括最短路径,全路径搜索算法演示程序请在http://pan.baidu.com/s/1jG9gKMM#dir/path=%2F%E4%BA%A7%E5%93%81%2FDemos 找 ShortWa ...

  4. poj 1456 Supermarket(并查集维护区间)

     题意:有一些货物,每一个货物有价值和卖出的截至日期,每天能够卖一个货物,问能卖出的最大价值是多少. 思路:算法不难想到,按价值降序排列.对于每一件货物,从deadline那天開始考虑.假设哪天空 ...

  5. Event Sourcing - ENode(三)

    接上一篇 http://www.cnblogs.com/dopeter/p/4903328.html 老板昨天在第二篇介绍中回复代码和文字无法一一对应.为了更好的让老板为大家解惑,把第二篇最后的猜测的 ...

  6. Hadoop获得先进的步步高(四)-试Hadoop

    四.试Hadoop 一个简单的求每年温度最大值的程序. 1.准备两个文本測试数据 准备两个名为data1.txt及data2.txt的文件.用于做为计算的输入数据,将其放于/home/fenglibi ...

  7. Razor和HtmlHelper的使用意义

    Razor和HtmlHelper的使用意义 写这篇文档的目的是为了给初学MVC的同伴们介绍在MVC的View中的两个新概念,能有利于我们更快,更好的开发项目.一个是视图引擎,一个是HtmlHlper. ...

  8. Javascript学习8 - 脚本化文档(Document对象)

    原文:Javascript学习8 - 脚本化文档(Document对象) 每个Web浏览器窗口(或帧)显示一个HTML文档,表示这个窗口的Window对象有一个document属性,它引用了一个Doc ...

  9. NSOJ Constructing Roads(图论)

    There are N villages, which are numbered from 1 to N, and you should build some roads such that ever ...

  10. CSS设置滚动条样式[转]

    原文转载地址:http://www.javascript100.com/?p=756 webkit浏览器css设置滚动条 主要有下面7个属性 ::-webkit-scrollbar 滚动条整体部分,可 ...