JS正则表达式笔记
正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。
| 正则 | 描述 | 正则 | 描述 |
| \f | 匹配换页符 | \t | 匹配制表符 |
| \n | 匹配换行符 | \v | 匹配垂直制表符 |
| \r | 匹配回车 | \s | 匹配单个空格,等同于[\f\n\r\t\v]; |
| \S | 表示非空格字符 | \d | 在正则中表示数字 |
| \w | 表示单词字符,等同于字符集合[a-zA-Z0-9_] | \ | 创建正则对象时,要转义 |
| + | 表示出现一到多次 | ^ | 表示后边出现的数字必须在开头 |
| $ | 表示前面出现的数字必须出现在结尾 |
g是模式修正符,表示在整个字符串里多次查找
match方法来找到和reg正则相匹配的内容
"ab23839cd".match(/\d+/)
空白\s(包括空格回车制表符等)
\f匹配换页符,\n匹配换行符,\r匹配回车,\t匹配制表符,\v匹配垂直制表符。\s匹配单个空格,等同于[\f\n\r\t\v]。例如:
例1:
var reg = /\s.+/;
var str='This is a test String.';
alert(reg.exec(str));
返回“is a test String.”,正则的意思是匹配第一个空格以及其后的所有非换行字符。
同样,\S表示非空格字符。
例2:
var reg = /\S+/;
var str='This is a test String.';
alert(reg.exec(str));
匹配结果为This,当遇到第一个空格之后,正则就停止匹配了。
在正则中最常用到的一个是:
例3:var reg=/^\s*$/; //匹配任意空或空白字符,如果你什么也没输入,或输入的只有空格、回车、换行等字符,则匹配成功。这样就可以验证用户是否正确输入内容了。
这个用来验证输入框里是否写了有效效字符,用法如下:
var reg=/^\s*$/;
if(reg.test(value)){
alert('请输入有效值');
return false;
}
单字符\w
\w(小写w)表示单词字符,等同于字符集合[a-zA-Z0-9_]。例如:
var reg = /\w+/;
var str='wanjinfen';
alert(reg.exec(str));
返回完整的wanjinfen字符串,因为所有字符都是单词字符。
var reg = /\w+/;
var str='.className';
alert(reg.exec(str));
结果显示匹配了字符串中的className,只有第一个“.”唯一的非单词字符没有匹配。
var reg = /\w+/;
var str='正则教程';
alert(reg.exec(str));
试图用单词字符去匹配中文自然行不通了,返回 null。
\W(大写W)表示非单词字符,等效于[^a-zA-Z0-9_]
var reg = /\W+/;
var str='正则教程';
alert(reg.exec(str));
返回完整的字符串,因为,中文算作是非单词字符。
分组和分组的引用
形式如下:/(子正则表达式)\1/ 依旧用例子来说明:
1.例子
var reg = /\w/;
var str='zhufengpeixun';
alert(reg.exec(str));
//返回z
2.例子
var reg = /(\w)(\w)/;
var str='zhufengpeixun';
alert(reg.exec(str));
返回zh,z,h ,zh是整个正则匹配的内容,z是第一个括号里的子正则表达式匹配的内容,h是第二个括号匹配的内容
3.例子
var reg = /(\w)\1/;
var str='zhufengpeixun';
alert(reg.exec(str));
则会返回null。这里的“\1”就叫做反向引用,它表示的是第一个括号内的子正则表达式匹配的内容。在上面的例子中,第一个括号里的(\w)匹配了z,因此“\1”就同样表示z了,在余下的字符串里自然找不到z了。与第二个例子对比就可以发现,“\1”是等同于“第1个括号匹配的内容”,而不是“第一个括号的内容”。
var reg = /(\w)\1/;
var str='bbs.zhufengpeixun.cn';
alert(reg.exec(str));
这个正则则会匹配到bb,b。同样,前面有几个子正则表达式我们就可以使用几个反向引用。例如:
var reg = /(\w)(\w)\2\1/;
var str='woow';
alert(reg.exec(str));
会匹配成功,因为第一个括号匹配到w,第二个括号匹配到o,而\2\1则表示ow,恰好匹配了字符串的最后两个字符。
括号() ,表示子表达式,也叫分组
前面我们曾经讨论过一次括号的问题,见下面这个例子:
var reg = /^(b|c).+/;
var str='bbs.blueidea.com';
alert(reg.exec(str));
这个正则是为了实现只匹配以b或者c开头的字符串,一直匹配到换行字符,但是。上面我们已经看到了,可以使用“\1”来反向引用这个括号里的子正则表达式所匹配的内容。而且exec方法也会将这个字正则表达式的匹配结果保存到返回的结果中。
未完……
JS正则表达式笔记的更多相关文章
- js读书笔记
js读书笔记 基本类型的基本函数总结 1. Boolean() 数据类型 转换为true的值 转换为false的值 Boolean true false String 任何非空字符串 "&q ...
- 初识JS正则表达式
初识JS正则表达式 看到的使用的正则表达式练习:http://www.cnblogs.com/wenanry/archive/2010/09/06/1819552.html PS:本文参考李炎恢JS笔 ...
- 【正则】精通JS正则表达式,没消化 信息量太大,好文
http://www.jb51.net/article/25313.htm 正则表达式可以: •测试字符串的某个模式.例如,可以对一个输入字符串进行测试,看在该字符串是否存在一个电话号码模式或一个信用 ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
- 使用外部web组件-----easyUI、jQueryUI、Bootstrap、js正则表达式
1.使用外部web组件,以Bootstrap为例 <head> <link rel='stylesheet' href='bootstrap-3.3.0-dist/dist/css ...
- Vue.js学习笔记(2)vue-router
vue中vue-router的使用:
- js正则表达式图形化工具-rline
github地址:https://github.com/finance-sh/rline 在线demo: http://lihuazhai.com/demo/test.html 这是一个js正则表达式 ...
- React.js入门笔记
# React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...
随机推荐
- 加深理解HTTP请求---网络基础TCP/IP
为了了解HTTP,必须的了解TCP/IP协议族. 通常使用的网络实在TCP/IP协议族的基础上运作的.而HTTP就属于他的一个子集. 1.TCP/IP 协议族 计算机与网络设备要相互通信,双方就必须基 ...
- PHP Swoole 基于纯真IP库根据IP匹配城市
把纯真IP库读到内存,纯真IP库本来就是有序的,然后每次请求二分查找就行,44WIP查找十几次就搞定了 dispatch_mode最好写3,不然做服务的时候,会导致进程任务分配不均匀. max_req ...
- 关于自学C语言这件事
说在前面 为什么会写下这篇文章?本人也并不是什么大神,但是也自学了很久,从一个小白开始自学,期间走过很多弯路,掉过许多坑.一路跌跌撞撞下来,算是有了点收获,有了点感想,将它们记录下来,希望能帮助新入坑 ...
- userdel
功能说明:用于删除指定的用户及该用户相关的文件. 参数选项:-f 强制删除用户,即使用户当前已登录.-r 删除用户的同时,删除与用户相关的所有文件. 说明:尽量不要用userdel删除用户,而是采用在 ...
- python:部分内置函数与匿名函数
一.内置函数 1,数据类型:int,bool .......... 2,数据结构:dict,list,tuple,set,str 3,reversed--保留原列表,返回一个反序的迭代器 revers ...
- ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 A、Saving Tang Monk II 【状态搜索】
任意门:http://hihocoder.com/problemset/problem/1828 Saving Tang Monk II 时间限制:1000ms 单点时限:1000ms 内存限制:25 ...
- 2018.11.19 Struts2中Action类的书写方式
方式1: 方式2: 方式3
- 一个有意思的标签<marquee>
marquee标签不是HTML3.2的一部分,并且只支持MSIE3以后内核,所以如果你使用非IE内核浏览器(如:Netscape)可能无法看到下面一些很有意思的效果,该标签是个容器标签. 一.mar ...
- Java实体类的属性类型与数据库表字段类型对应表
原文地址:https://blog.csdn.net/lyhjava/article/details/50562786 Java中的数据类型和SQL中的数据类型有很多不一样,需要仔细区分,不然易在开发 ...
- JVM 监控以及内存分析
1 内存分析1.1 jmap -histo 命令pid=`jps | awk '{if ($2 == "Jps") print $1}'`jmap -histo $pid > ...