js正则表达式详解及示例讲解
所谓正则表达式,简单来说就是一种规则,一种计算机能读懂的规则。js中的正则表达式语法是Perl5(一种很早的编程语言)的正则语法的子集。本文将在基础知识的基础上添加示例帮助快速理解正则表达式。
学习正则要对字符串以及字符串的函数非常了解,在此不多赘述,了解字符串可见另一篇文章,链接:http://www.cnblogs.com/pomelott/p/6567618.html。
1.正则表达式的创建方法
1.1 var reg=new RegExp(表达式,修饰符)
1.2 var reg=/表达式/修饰符
2.正则表达式的字符类(可表示一类字符)
[...] 方括号内的任意一个字符(记住是一个)
[^...] 不是方括号内的任意字符
[a|b] a或b,只能是一个
\w 任何ASCII字符,等价于[0-9a-zA-Z_]
\w 任何不是ASCII字符组成的单词,等价于[^0-9a-zA-Z]
\d 任何数字,等价于[0-9]
\D 任何非ASCII编码数字,等价于[^0-9]
\s 任何Unicode空白符
\S 任何非Unicode空白符
. 换行符和和其他Unicode行终止符之外的任意字符
[\b] 退格直接量
var str="aSsdAeffa";
var reg=/a/ig; //i为ignore(忽略大小写) g为global(全局匹配) ig顺序可调换
console.log(typeof reg); //Object 正则表达式是一个对象,而不是字符串。new RegExp()在内部也同样利用第一个参数的字符串创建一个正则对象
console.log(reg.test(str)); //true 注意这是正则自带的方法,而不是字符串
console.log(str.match(reg)); //["a", "A", "a"] 全局不区分大小写 ,返回数组
var str2="afds15d dw";
var reg2=/\d/g;
var reg3=/\w\d/;
console.log(str2.search(reg2)); //
console.log(str2.search(reg3)); //3 寻早一个字符在前数字在后的组合
3. 修饰符
i ignore忽略大小写进行匹配
g global进行全局匹配
m 多行匹配,^匹配一行的开头和字符串的开头,$匹配行的结束和字符串的结束
var str3="AsadwAPoamelOtT";
var reg4=/a/;
var reg5=/a/i;
var reg6=/a/g;
var reg7=/a/gi;
console.log(str3.match(reg4)); //["a", index: 2, input: "AsadwAPoamelOtT"]
console.log(str3.match(reg5)); //["A", index: 0, input: "AsadwAPoamelOtT"]
console.log(str3.match(reg6)); //["a", "a"]
console.log(str3.match(reg7)); //["A", "a", "A", "a"]
4. 量词,修饰前一个字符
{n,m} n-m此
{n,} 大于等于n次
{,m} 小于等于m次
? 0次或一次,等价于{0,1}
+ 一次或多次,等价于{1,}
* 匹配前一项0次或多次,等价于{0,}
var str4="saf_344 fa4f66gp 9a";
var reg8=/\d+/g;
var reg9=/\d\d/g;
var reg10=/\d{2,}/g;
var reg11=/\d/g;
console.log(str4.match(reg8)); //["344", "4", "66", "9"]
console.log(str4.match(reg9)); //["34", "66"]
console.log(str4.match(reg10)); //["344", "66"]
console.log(str4.match(reg11)); //["3", "4", "4", "4", "6", "6", "9"]
5. 锚字符
^ 匹配一行的开头
$ 匹配一行的结尾
\b 单词边界,意为\w与\w之间的位置,或者位于字符\w与字符串的开头挥着结尾之间的位置
\B 匹配非单词边界
平时不带^和$的正则表达式匹配的是包含符合正则规则的,而加了^和$的表达式匹配的是完全符合正则规则的。
例:邮箱验证
var str5="pomelott@163.com";
var str6="pomelo163.com";
var str7="pomelo@163com";
var reg12=/^\w+@\w+\.[a-z]{2,4}$/;
console.log(reg12.test(str5)); //true
console.log(reg12.test(str6)); //false
console.log(reg12.test(str7)); //false
6.选择
6.1 /a|b/ 匹配a部分或者b部分
var reg13=/a|b/g;
var str8="adfsbrsar";
console.log(str8.match(reg13)); //["a", "b", "a"]
6.2 /..[a|b]../ 匹配a或者b
var reg14=/\da|b\d/g;
var reg15=/\d[a|b]\d/g;
var str9="4fd4a6e5b55";
console.log(str9.match(reg14)); //["4a", "b5"]
console.log(str9.match(reg15)); //["4a6", "5b5"]
例:去掉行首或者行尾的空格
var reg16=/^\s+|\s+$/g;
var str10=" pomelo tt ";
console.log(str10.replace(reg16,"")); //pomelo tt
6.3 分组() 将括号内的当成整体来操作,可以用*,+,?,|进行整体修饰
var str11="java";
var str12="javascript";
var reg17=/java(script)?/; //script可以有也可以没有
console.log(reg17.test(str11));
console.log(reg17.test(str12));
var reg18=/(ab|cd)+|ef/; //用于匹配存在 一个或多个(ab或cd)或一个ef 的字符串
最后再附上两个例子:
例1.敏感词过滤:我们在游戏中经常看到的***
var reg19=/fuck|草|日/g;
var str13="fuck!真实日了狗了!";
console.log(str13.replace(reg19,"*")); //*!真实*了狗了!
例2. 检测中文:
var reg20=/[\u4e00-\u9fa5]/g; //u为Unicode编码 4e00-9fa5 为数字编码范围
var str14="pomelo忒忒,wo是qianduan程序员";
console.log(str14.match(reg20)); //["忒", "忒", "是", "程", "序", "员"]
喜欢请点击右下角推荐,如有疑问可以留言。转载请标明出处。
js正则表达式详解及示例讲解的更多相关文章
- JS 正则表达式详解
在此提供相关的链接,请访问: http://www.cnblogs.com/dolphinX/p/3486214.html http://www.cnblogs.com/dolphinX/p/3486 ...
- js正则表达式详解
一.正则的两种写法: var re = /a/; //一般情况下都用简写的方式 性能好 var re = new RegExp('a'); //需要传入参数的时候用 二.转义字符: \n 换行 \r ...
- JS 正则表达式^$详解,脱字符^与美元符$同时写表示什么意思?
壹 ❀ 引 对于初学正则的同学来说,^$这两个看似简单的字符却在使用中总让匹配结果超出我们的预期,^什么时候表示行首什么时候表示反义?^ $两个一起写表示什么含义?今天我们就来详细聊聊这两个字符. ...
- Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式
Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...
- (转)linux正则表达式详解
linux正则表达式详解 http://blog.csdn.net/wuliowen/article/details/64131815 1:什么是正则表达式: 简单的说,正则表达式就是处理字符串的方法 ...
- Linux文本处理三剑客之grep及正则表达式详解
Linux文本处理三剑客之grep及正则表达式详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux文本处理三剑客概述 grep: 全称:"Global se ...
- JavaScript正则表达式详解(一)正则表达式入门
JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
- Java 正则表达式详解_正则表达式
body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...
随机推荐
- IOS学习之block代码块
前言: block这个名词对于做一般开发者来说可能会觉得稀奇古怪而非常陌生,但是对于iOS工程师来说,在整个开发中到处都是它的影子,今天一大早觉得在假期学习一下它,对明年的iOS开发工作做个准备,突然 ...
- spring 注解配置
要在spring mvc中使用注解需要在*-servlet.xml文件中添加 <mvc:annotation-driver />配置 这个配置会创建DefaultAnnotationHan ...
- WebAppBuilder自定义主题
WebAppBuilder自定义主题 by 李远祥 基本步骤: 创建新主题的文件夹 注册新的主题到manifest.json 文件 覆盖HeaderController 部件的颜色. 覆盖panel的 ...
- CentOS7 设置局域网固定IP
题记: 在局域网内PC通常都是采用自动获取IP的方式从路由器拿到局域网IP的,每次PC启动后分配到的局域网IP都不一定相同.但是出于某些特殊的需求,例如要在局域网内做端口映射,需要将PC设置成使用固定 ...
- windows 下 多版本nodejs切换 nvmw
以下教程不适用于nodejs v0.6.5及以下版本 nvmw 下载到本地 Git clone https://github.com/hakobera/nvmw.git 2.设置环境PATH 添加如上 ...
- jquery与ajax的XMLHttpRequest对象介绍
首先 认识一个对象 这个对象叫XMLHttpRequest XMLHttpRequest对象可以提供在不刷新页面的情况下向服务器发送异步请求,并且接受服务器端返回的结果.从而实现局部更新当前页面的功 ...
- 前端Cookie与Session的区别
我们在实际生活中总会遇到这样的事情,我们一旦登录(首次输入用户名和密码)某个网站之后,当我们再次访问的时候(只要不关闭浏览器),无需再次登录.而当我们在这个网站浏览一段时间后,它会产生我们浏览的记录, ...
- 剑指offer编程题Java实现——面试题5从头到尾打印链表
题目描述* 剑指offer面试题5:从尾到头打印链表 输入一个链表的头结点,从尾到头打印出每个结点的值 解决方案一:首先遍历链表的节点后打印,典型的"后进先出",可以使用栈来实现这 ...
- 前端安全(XSS、CSRF防御)
一.网络安全 OWASP:开放式Web应用程序安全项目(OWASP,Open Web Application Security Project) OWASP是一个开源的 ...
- 【翻译】LPeg编程指南
原文:http://www.inf.puc-rio.br/~roberto/lpeg/lpeg.html 译者序: 这个是官方的LPeg的文档.这段时间学习LPeg的时候发现国内关于LPeg的文章 ...