1. trim功能(清除字符串两端空格)

String.prototype.trim = function() {
 return this.replace(/(^\s+)|(\s+$)/g, '');

};

' abc '.trim();
// 输出 "abc"

2. 提取浏览器中url的参数名和参数值

function getUrlParam(url) {

var result = {},

url = url || window.location.href,

reg = /([\?|&])(.+?)=([^&?]*)/gi,

arr = reg.exec(url);

while(arr) {
    result[arr[2]] = arr[3];

arr = reg.exec(url);

}

return result;

}

getUrlParam('https://www.baidu.com?a=0&b=1&c=2');
// 输出 "{a: "0", b: "1", c: "2"}"

3. 扩展typeof,探明具体类型

function getType(obj) {
 var result = Object.prototype.toString.call(obj);
     result = result.replace(/\[object\s(\w+)\]/, '$1');

return result;

}

getType([1,2]);
// 输出 "Array"
getType(null);
// 输出 "Null"

4. 在字符串的指定位置插入新字符

String.prototype.insertAt = function(str, index) {

index += 1;

var reg = new RegExp('(^.{' + index + '})');

return this.replace(reg, '$1' + str);

}; 
 
'abcde'.insertAt('123', 2);
// 输出 "abc123de"

5. 隐藏手机号中间4位

function telFormat(tel) {

tel = String(tel);

return tel.replace(/(\d{3})(\d{4})(\d{4})/, '$1****$3');

}

telFormat(13899207998);
// 输出 "138****7998"

6. 字符串调换

var name = "Doe Jone";

name.replace(/(\w+)\s* \s*(\w+)/, "$2 $1"); 
// 输出 "Jone Doe"

7. 字符串截取

var str = ' asfdf === sdfaf ##';

str.match(/[^===]+(?=[===])/g);

// 输出 " asfdf "

8. 检测密码强度正则

// 必须是包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间。

/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$/.test("weeeeeeeW2");
// 输出 true

// 密码强度正则,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符

/^.*(?=.{6,})(?=.*\d)(?=.*[A-Z])(?=.*[a-z])(?=.*[!@#$%^&*? ]).*$/.test("diaoD123#");

// 输出 true

9. 检测中文字符

// 检测字符串是否只含中文

/^[\u4e00-\u9fa5]{0,}$/.test("但是d");
// 输出 false

/^[\u4e00-\u9fa5]{0,}$/.test("但是");
// 输出 true

// 包含有中文

/[\u4E00-\u9FA5]/.test("但是d");
// 输出 true

10. 身份证号正则

/^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$/.test("42112319870115371X");

// 输出 false

11. 校验日期 (“yyyy-mm-dd“ 格式,已考虑平闰年)

// 日期正则,简单判定,未做月份及日期的判定

var dP1 = /^\d{4}(\-)\d{1,2}\1\d{1,2}$/;

console.log(dP1.test("2017-05-11"));

// 输出 true

console.log(dP1.test("2017-15-11"));
// 输出 true

// 日期正则,复杂判定

var dP2 = /^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|(?:0[48]|[2468][048]|[13579][26])00)-02-29)$/;

console.log(dP2.test("2017-02-11"));
// 输出 true

console.log(dP2.test("2017-15-11"));

// 输出 false

console.log(dP2.test("2017-02-29"));

// 输出 false

12. 浮点数正则

// 验证是否为浮点数

/^(?:[-+])?(?:[0-9]+)?(?:\.[0-9]*)?(?:[eE][\+\-]?(?:[0-9]+))?$/.test(0.2);
// 输出 true

13. Email正则

// 验证Email
/^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/.test("wowohoo@qq.com");

// 1.邮箱以a-z、A-Z、0-9开头,最小长度为1.

// 2.如果左侧部分包含-、_、.则这些特殊符号的前面必须包一位数字或字母。

// 3.@符号是必填项

// 4.右则部分可分为两部分,第一部分为邮件提供商域名地址,第二部分为域名后缀,现已知的最短为2位。

//   最长的为6为。

// 5.邮件提供商域可以包含特殊字符-、_、.

/^[a-z0-9]+([._\\-]*[a-z0-9])*@([a-z0-9]+[-a-z0-9]*[a-z0-9]+.){1,63}[a-z0-9]+$/.test("wowohoo@qq.com");
// 输出 true

14. 校验传真号码

// 国家代码(2到3位)-区号(2到3位)-电话号码(7到8位)-分机号(3位)

/^(([0\+]\d{2,3}-)?(0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$/.test('021-5055455');
// 输出 true

15. 手机号正则

/^1[34578]\d{9}$/.test("13611778887");

// 输出 true

//* 13段:130、131、132、133、134、135、136、137、138、139

//* 14段:145、147

//* 15段:150、151、152、153、155、156、157、158、159

//* 17段:170、176、177、178

//* 18段:180、181、182、183、184、185、186、187、188、189

//* 国际码 如:中国(+86)

/^((\+?[0-9]{1,4})|(\(\+86\)))?(13[0-9]|14[57]|15[012356789]|17[03678]|18[0-9])\d{8}$/.test("1

// 输出 true

16. URL正则

/^((https?|ftp|file):\/\/)?([\da-z\.-]+)\.([a-z\.]{2,6})([\/\w \.-]*)*\/?$/.test("http://wangchujiang.com");

// 输出 true

// 获取url中域名、协议正则 'http://xxx.xx/xxx','https://xxx.xx/xxx','//xxx.xx/xxx'

/^(http(?:|s)\:)*\/\/([^\/]+)/.test("http://www.baidu.com");

// 输出 true

/^((http|https):\/\/(\w+:{0,1}\w*@)?(\S+)|)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?$/.test('https://www.baidu.com/s?wd=@#%$^&%$#');

// 输出 true

// 必须有协议

/^[a-zA-Z]+:\/\//.test("http://www.baidu.com");
// 输出 true

17. RGB Hex颜色正则

/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/.test("#b8b8b8");

// 输出 true

18. 车牌号正则

/^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}[A-Z0-9]{4}[A-Z0-9挂学警港澳]{1}$/.test("沪B99116");
// 输出 true

19. 校验微信号

// 6至20位,以字母开头,字母,数字,减号,下划线
/^[a-zA-Z]([-_a-zA-Z0-9]{5,19})+$/.test("jslite");
// 输出 true

20. 校验QQ号

// 5至11位

/^[1-9][0-9]{4,10}$/.test("398188661");
// 输出 true

JavaScript 常用正则示例的更多相关文章

  1. 问题7:JavaScript 常用正则示例

    1. trim功能(清除字符串两端空格) String.prototype.trim = function() { return this.replace(/(^\s+)|(\s+$)/g, ''); ...

  2. javascript常用代码大全

    http://caibaojian.com/288.html    原文链接 jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_ca ...

  3. Javascript 常用函数【3】

    jquery选中radio //如果之前有选中的,则把选中radio取消掉 $("#tj_cat .pro_category").each(function() { if ($(t ...

  4. 前端学习(十七):JavaScript常用对象

    进击のpython ***** 前端学习--JavaScript常用对象 JavaScript中的所有事物都是对象:字符串.数字.数组.日期,等等 在JavaScript中,对象是拥有属性和方法的数据 ...

  5. JavaScript常用正则表达式与应用(一)

    JavaScript的String类和RegExp对象类都定义了相关方法使用正则表达式进行模式匹配,本文将以连载方式介绍JavaScript常用正则表达式与相关应用,欢迎交流 本节是连载一,首先介绍J ...

  6. javascript常用知识点集

    javascript常用知识点集 目录结构 一.jquery源码中常见知识点 二.javascript中原型链常见的知识点 三.常用的方法集知识点 一.jquery源码中常见的知识点 1.string ...

  7. JavaScript 的正则也有单行模式了

    正则表达式最早是由 Ken Thompson 于 1970 年在他改进过的 QED 编辑器里实现的,正则里最简单的元字符 “.” 在当时所匹配的就是除换行符外的任意字符: "." ...

  8. javascript常用经典算法实例详解

    javascript常用经典算法实例详解 这篇文章主要介绍了javascript常用算法,结合实例形式较为详细的分析总结了JavaScript中常见的各种排序算法以及堆.栈.链表等数据结构的相关实现与 ...

  9. JavaScript常用的Hook脚本

    JavaScript常用的Hook脚本 本文Hook脚本 来自 包子 页面最早加载代码Hook时机 在source里 用dom事件断点的script断点 然后刷新网页,就会断在第一个js标签,这时候就 ...

随机推荐

  1. Oracle作业5——多表查询、子查询

    一.基础练习: 1.查询和scott相同部门的员工姓名ename和雇用日期hiredate SELECT ENAME,HIREDATE FROM EMP WHERE DEPTNO=(SELECT DE ...

  2. 360极速浏览器用ie8模式打开网页(360浏览器同理)

    在访问年代久远的的网页时经常会遇到兼容性的问题,用360浏览器(或360极速浏览器)中通过设置可解决. 在360极速浏览器中分别依次选择:选项->高级设置->内核模式->内核切换设置 ...

  3. iOS:CALayer(17-12-06更)

    目录 1.CALayer(父类) 2.CAShapeLayer(形状/画布) 3.CAEmitterLayer(粒子发射层) 4.CAGradientLayer(渐变层) 5.CATransformL ...

  4. iOS之iOS中的(null)、<null>、 nil 的问题

      摘要: 你有没有过这样的经历,就是界面上显示出类似<null>.(null)这样一些东西,有时候还会莫名其妙的闪退.反反复复真是曰了犬,今天来总结一下这个问题的解决方法 前段时间开发过 ...

  5. Java并发编程(一)为什么要并发

    并发所带来的好处 1. 并发在某些情况(并不是所有情况)下可以带来性能上的提升 1) 提升对CPU的使用效率 提升多核CPU的利用率:一般来说一台主机上的会有多个CPU核心,我们可以创建多个线程,理论 ...

  6. 20181.5IDEAx64位授权码

    转载于:https://blog.csdn.net/q258523454/article/details/79775092 2DZ8RPRSBU-eyJsaWNlbnNlSWQiOiIyRFo4UlB ...

  7. SQL注入的浅尝辄止

    简单的说,SQL注入就是通过在前端页面输入SQL语句,导致系统暴露异常信息在前端页面显示,非法者通过这些异常信息获取数据库的相干信息,为攻击系统做准备.

  8. 史上更全的 MySQL 高性能优化实战总结!

    1 前言 2 优化的哲学 3 优化思路 3.1 优化什么 3.2 优化的范围有哪些 3.3 优化维度 4 优化工具有啥? 4.1 数据库层面 4.2 数据库层面问题解决思路 4.3 系统层面 4.4 ...

  9. C++ & java小结

    JAVA类: 每个类都属于一个包,private成员:只有该类可以访问,子类不能访问 Public:其他类可以访问 Protected: 只有本包内的类可以访问 如果在声明class时不加public ...

  10. tcp/ip五层协议

    TCP/IP协议不是TCP和IP这两个协议的合称,而是指因特网整个TCP/IP协议族.互联网协议(Internet Protocol Suite)是一个网络通信模型,以及一整个网络传输协议家族,为互联 ...