创建正则对象

方法一:

var reg = new RegExp(pattern, attributes);

参数pattern:是一个字符串,指定了正则表达式的模式或其他正则表达式。
参数attributes:是一个可选的字符串,包含属性 “g”、“i” 和 “m”,分别用于指定全局匹配、区分大小写的匹配和多行匹配。ECMAScript 标准化之前,不支持 m 属性。如果 pattern 是正则表达式,而不是字符串,则必须省略该参数。
返回值:一个新的 RegExp 对象,具有指定的模式和标志。如果参数 pattern 是正则表达式而不是字符串,那么 RegExp() 构造函数将用与指定的 RegExp 相同的模式和标志创建一个新的 RegExp 对象。
如果不用 new 运算符,而将 RegExp() 作为函数调用,那么它的行为与用 new 运算符调用时一样,只是当 pattern 是正则表达式时,它只返回 pattern,而不再创建一个新的 RegExp 对象。

例如:

var reg = new RegExp('ab[a-z]','i');
var str = 'ABC';
console.log(reg.test(str));

运行结果:

方法二:

var reg = /pattern/attributes;

例如:

var reg = /ab[a-z]/i;
var str = 'ABC';
console.log(reg.test(str));

运行结果:

与正则表达式相关的方法

针对RegExp对象

  1. test() 匹配
  2. exec() 提取一个内容

针对String对象

  1. match() 提取 可以提取多个内容
  2. replace() 替换
  3. split() 分割
  4. search() 搜索

匹配

匹配日期

var dataStr = '2022-01-01';
var dataReg = /^\d{4}-\d{1,2}-\d{1,2}$/;
console.log(dataReg.test(dataStr));

运行结果:

匹配手机

var phoneStr='13698445481';
var phoneReg=/^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\d{8}$/;
console.log(phoneReg.test(phoneStr));

运行结果:

提取

exec()提取:提取单个

var qqStr = 'kai:125441031, hui:413257135, shi:9853614'
var reg = /\d+/g;
var content = reg.exec(qqStr);
console.log(content);
console.log(content[0]);
content = reg.exec(qqStr);
console.log(content[0]);
content = reg.exec(qqStr);
console.log(content[0]);

运行结果:

循环操作:

do{var content = reg.exec(qqStr);if (content){console.log(content[0])}
}while(content);

运行结果:

match() 提取:提取多个

var qqStr = 'kai:125441031, hui:413257135, shi:9853614';
var reg = /\d+/g;
var qqArr = qqStr.match(reg);
console.log(qqArr);

运行结果:

分组提取

  1. 正则表达式中的()作为分组来使用,获取分组匹配道德结果用regex.$1 $2 $3来获取
  2. 示例
    var dataStr = '2022-01-01';
    var dataReg = /^(\d{4})-(\d{1,2})-(\d{1,2})$/;
    if (dataReg.test(dataStr)){console.log(RegExp.$1);console.log(RegExp.$2);console.log(RegExp.$3);
    }
    

    运行结果:

替换

替换所有空白字符串

var str = '       asd asd asd    ';
console.log(str);
str = str.replace(/\s/g,'*');
console.log(str);

运行结果:

替换所有开头的空格

var str = '       asd asd asd    ';
console.log(str);
str = str.replace(/^\s*/g,'*');
console.log(str);

运行结果:

替换所有结尾的空格

var str = '       asd asd asd    ';
console.log(str);
str = str.replace(/\s*$/,'*');
console.log(str);

运行结果:

贪婪和非贪婪模式

概念

  1. 贪婪:尽可能多的匹配
  2. 非贪婪:尽可能少的匹配

语法

将?紧跟在任何量词*、+、?或者{}的后面,将会使量词变为非贪婪的(匹配尽可能少的字符),和缺省使用的贪婪模式(匹配尽可能多的字符)正好相反。

案例

var str = 'aaaabbbbbbbbaaaa';
var res = str.match(/a.*b/);
console.log(res[0]);
var res1 = str.match(/a.*?b/);
console.log(res1[0]);

运行结果:

也就是说,默认贪婪模式。
可以更改为非贪婪模式,只匹配一个之后就不再匹配。

实战小案例:表单验证

/**
* 验证用户输入
* @param {String}eleId
* @param {Object}reg
*/
function checkInput(eleId, reg) {var ele = document.getElementById(eleId);ele.onblur = function (ev) {if (!reg.test(this.value)){ //不匹配this.style.borderColor = '#ff0000'}else{//匹配this.style.borderColor = '#cccccc'}}
}// 1.3 表单验证
// 验证手机号码
checkInput('phone',/^(13[0-9]|14[5|7]|15[0|1|2|3|4|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])\\d{8}$/);
// 验证手机邮箱
checkInput('email',/^\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*$/);

正则表达式:Javascript相关推荐

  1. html表单验证用正则表达式,JavaScript 使用正则表达式进行表单验证的示例代码

    搜索热词 JavaScript 表单验证正则表达式大全利用正则表达式判断是否是0-9的阿拉伯数字 function regIsDigit(fData) { var reg = new RegExp(& ...

  2. 正则表达式JavaScript版本回顾笔记背诵版本

    前言 正则表达式之所以强大,是因为其能实现模糊匹配,精确匹配没有任何价值. 正则表达式学习笔记 第一章 JavaScript原型对象与原型链 1.1 正则表达式概念 RegExp:是正则表达式(reg ...

  3. 正则表达式-JavaScript

    创建一个正则表达式 你可以使用以下两种方法构建一个正则表达式: 使用一个正则表达式字面量,其由包含在斜杠之间的模式组成,如下所示: var re = /ab+c/; 脚本加载后,正则表达式字面量就会被 ...

  4. 常用js正则表达式 Javascript正则表达式实战手册

    最近做了几个项目,发现正则表达式用得越来越多了.我个人的习惯是,能通过查手册获取的东西绝不死记硬背,虽然大多数技术网站都搜罗了一堆Javascript正则表达式的用法,但我还是想整理一份更有实战意义的 ...

  5. html邮箱地址的正则表达式,javascript写一个校验邮箱的正则表达式

    test 判断字符串是否符合正则的要求 注意注意:字符串有一部分符合要求,test就会判断为真.这个时候我们可以加一个行首(^)行尾($)来控制 分析 我们根据常用邮箱写一个中文的校验规则如下: 我们 ...

  6. 从0到1分步实现一个出生日期的正则表达式(JavaScript)

    简言 在表单验证中,经常会用正则表达式做出生日期校验.本文把出生日期分割成几个部分,分步地介绍了实现一个出生日期校验的完整过程.相信您在理解了本篇的内容后,对如何编写和如何应用正则表达式会有进一步的理 ...

  7. javascript 正则表达式详解

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  8. 经典JavaScript正则表达式实战

    来源:http://www.cainiao8.com/web/js_note/js_regular_expression_blueidea.html 目录 1. 正则表达式实战...1    2. 匹 ...

  9. javascript的正则表达式

    正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释,如/b/匹配字符"b",当b前面加了反斜杆后/\b/,转意为匹配一个 ...

  10. JavaScript正则表达式笔记

    正则表达式是一个描述字符模式的对象. JavaScript的RegExp对象和String对象定义了使用正则表达式来执行强大的模式匹配和文本检索与替换函数的方法. ''**************** ...

最新文章

  1. QTP中对数据库的操作(查询,更新和删除等)
  2. mysql xid原理_MySQL数据库分布式事务XA实现原理分析
  3. JVM:堆与栈的比较
  4. python find函数 和index的区别_python中index()与find()的区别
  5. java ssh pdf_JavaSSH框架技术规范.pdf
  6. GCC 使用-C语言编译过程
  7. GDAL/OGR 1.9.0获取shp文件中中文字段值和属性值乱码文件解决
  8. Intel超线程技术 Hyper-Threading Technology (4) - 处理器资源与超线程(分区的资源/竞争共享的资源)
  9. Gallery和BaseAdapter容器
  10. 站立会议05--个人进度
  11. hdu 3642 Get The Treasury(扫描线)
  12. STA series --- 3.Standard cell library(PART-III)
  13. c语言小车程序,循迹小车程序C语言
  14. centos6.5安装自动化工具ansible和图形化工具tower
  15. VS2012配置WTL
  16. 新员工入职表_招人难,留人难!超市如何留住新员工
  17. MyEclipse2015破解安装与使用
  18. websocket握手失败_WebSocket握手总结
  19. 【笔记】autoCAD无法显示文字解决方案
  20. 关于ADS1292测心率心电的一些学习总结

热门文章

  1. 2.UNIX 环境高级编程--UNIX标准及实现
  2. 158. class, static, self, parent
  3. 33. 数据类型转换
  4. 15. 发货选项(Shipping Options)
  5. android11电视,谷歌发布首款Android TV版 基于Android 11开发者预览版
  6. JSP中EL表达式不起作用
  7. ObjectAnimator实现菜单的弹出(扇形)
  8. 数据结构与算法之美-队列
  9. lr并发量和迭代的区别
  10. 利用老毛桃启动盘制作三合一系统启动:WINPE + CDlinux + Ubuntu