js正则表达式详解
一、正则的两种写法:
var re = /a/; //一般情况下都用简写的方式 性能好
var re = new RegExp('a'); //需要传入参数的时候用
二、转义字符:
\n 换行
\r 制表
\t 回车
\s 空格
\S 非空格
\d 数字
\D 非数字
\w 字符 ( 字母 ,数字,下划线_ )
\W 非字符
. 任意字符
\. 真正的点
\b 独立的部分 ( 起始,结束,空格 )
\B 独立的部分
\1 重复的第一个子项
\2 重复的第二个子项
三、正则的方法:
1、test:正则去匹配字符串,如果匹配成功就返回真,如果匹配失败就返回假;test的写法 : 正则.test(字符串)
var str = '374829348791'; var re = /\D/; alert( re.test( str ) ); // false 匹配失败
2、search : 正则去匹配字符串 , 如果匹配成功,就返回匹配成功的位置,如果匹配失败就返回 -1(和字符串里面的indexOf方法很像);search的写法 : 字符串.search(正则)
正则中的i:正则中默认是区分大小写的;如果不区分大小写的话,在正则的最后加标识 i
var str = 'abcdef'; var re = /B/i; //var re = new RegExp('B','i'); //也可以写成这种形式 alert( str.search(re) ); //true
3、match : 正则去匹配字符串,如果匹配成功,就返回匹配成功的数组,如果匹配不成功,就返回null;match的写法 : 字符串.match(正则)
正则默认:正则匹配成功就会结束,不会继续匹配;如果想全部查找,就要加标识 g(全局匹配)
量词 : 匹配不确定的位置;+ : 至少出现一次(>=1次 都会被找到)
var str1 = 'asdhfgsaghd12332slsd34'; var re = /\d+/g; alert( str1.match(re)); //[12332,34]
4、replace:正则去匹配字符串,匹配成功的字符去替换成新的字符串;replace的写法 : 字符串.replace(正则,新的字符串)
var str = 'aaa';
var re = /a+/g; //此时'a'替换了'aaa' str = str.replace(re,'b'); alert(str); //'b'
四、匹配子项 : 小括号 () (还有另外一个意思,分组操作)
var str = '2013-6-7'; var re = /(\d+)(-)/g; str = str.replace(re,function($0,$1,$2){
//第一个参数:$0(整体)
//第二个参数 : $1(第一括号里的正则)
//第三个参数 : $2(第二个括号里的正则) //alert( $2 ); //return $1 + '.'; return $0.substring(0,$0.length-1) + '.'; }); alert( str ); //2013.6.7
五、字符类 : 一组相似的元素 [] 中括号的整体代表一个字符
var str = 'abdc'; var re = /a[bde]c/; //字符类中的是“或”的关系 但是整体的位数要和字符串的一致 alert( re.test(str) ); //true
排除 : ^ 如果^写在[]里面的话,就代表排除的意思
var str = 'abc'; var re = /a[^bde]c/; //取反 alert( re.test(str) ); //false
六、找出字符串中最多的字符和个数:
var str = 'assssjdssskssalsssdkjsssdss'; var arr = str.split(''); str = arr.sort().join(''); //alert(str); var value = '';
var index = 0; var re = /(\w)\1+/g; str.replace(re,function($0,$1){ //alert($0); if(index<$0.length){
index = $0.length;
value = $1;
} }); alert('最多的字符:'+value+',重复的次数:'+index);
七、量词:出现的次数,常用的量词有:
{n,} 至少n次
* 任意次 {0,}
? 零次或一次 {0,1}
+ 一次或任意次{1,}
{n} 正好n次
八、去掉前后空格:^开始 $结束
var str = ' hello '; function trim(str){ var re = /^\s+|\s+$/g; return str.replace(re,''); } alert( '('+trim(str)+')' );
九、常用的正则例子(高级表单验证)
匹配中文:[\u4e00-\u9fa5]
行首行尾空格:^\s*|\s*$
Email:^\w+@[a-z0-9]+(\.[a-z]+){1,3}$
网址:[a-zA-z]+://[^\s]*
QQ号:[1-9][0-9]{4,9}
邮政编码:[1-9]\d{5}
身份证:[1-9]\d{14}|[1-9]\d{17}|[1-9]\d{16}x
js正则表达式详解的更多相关文章
- js正则表达式详解及示例讲解
所谓正则表达式,简单来说就是一种规则,一种计算机能读懂的规则.js中的正则表达式语法是Perl5(一种很早的编程语言)的正则语法的子集.本文将在基础知识的基础上添加示例帮助快速理解正则表达式. 学习正 ...
- JS 正则表达式详解
在此提供相关的链接,请访问: http://www.cnblogs.com/dolphinX/p/3486214.html http://www.cnblogs.com/dolphinX/p/3486 ...
- JS 正则表达式^$详解,脱字符^与美元符$同时写表示什么意思?
壹 ❀ 引 对于初学正则的同学来说,^$这两个看似简单的字符却在使用中总让匹配结果超出我们的预期,^什么时候表示行首什么时候表示反义?^ $两个一起写表示什么含义?今天我们就来详细聊聊这两个字符. ...
- 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& ...
- js对象详解(JavaScript对象深度剖析,深度理解js对象)
js对象详解(JavaScript对象深度剖析,深度理解js对象) 这算是酝酿很久的一篇文章了. JavaScript作为一个基于对象(没有类的概念)的语言,从入门到精通到放弃一直会被对象这个问题围绕 ...
- Django url配置 正则表达式详解 分组命名匹配 命名URL 别名 和URL反向解析 命名空间模式
Django基础二之URL路由系统 本节目录 一 URL配置 二 正则表达式详解 三 分组命名匹配 四 命名URL(别名)和URL反向解析 五 命名空间模式 一 URL配置 Django 1.11版本 ...
- (转)linux正则表达式详解
linux正则表达式详解 http://blog.csdn.net/wuliowen/article/details/64131815 1:什么是正则表达式: 简单的说,正则表达式就是处理字符串的方法 ...
随机推荐
- 'utf8' codec can't decode byte 0xd1 in position 931: invalid continuation byte解决方法
有时候,我得到这样的字符œ导致的UnicodeDecodeError错误. 我需要能够使串的UTF-8有或没有这些字符. 在工作中,经常遇到,读取一个文件,或者是从网页获取一个问题,明明看着是gb23 ...
- layer插件
最近在做公司的官网,其中有用到layer这款插件,以前没有接触过,不过学下来觉得好用好学.下面分享一下我的学习心得. layer是web弹出层组件.在官网下载好layer后,把他部署到你的项目文件中( ...
- Flex表格中添加图片
Flex4.5中datagrid加入图片显示image <s:DataGrid id="maingrid" x="0" y="36" ...
- geoR文档翻译
说来惭愧,很久没有更新自己的博客了.期间个人生活经历了很多变故,心理上的打击尤甚.加之没有取得好的科研成果,痛定思痛,还是下苦功夫多多学习. 最近对比验证各种方法的插值精度,用到了R语言地统计学包,由 ...
- Java单例模式的各种实现(饿汉、懒汉、静态内部类、static代码块、enum枚举类型)
饿汉模式 饿汉模式就是立即加载,在方法调用前,实例就已经被创建了,所以是线程安全的. public class MyObject1 { private static MyObject1 myObjec ...
- keepalive配置文件详解
第一部分:全局定义块 1.email通知.作用:有故障,发邮件报警. 2.Lvs负载均衡器标识(lvs_id).在一个网络内,它应该是唯一的. 3.花括号“{}”.用来分隔定义块,因此必须成对出现.如 ...
- java web中cookies的用法 转
一.什么是cookies? 大家都知道,浏览器与WEB服务器之间是使用HTTP协议进行通信的,当某个用户发出页面请求时,WEB服务器只是简单的进行响应,然后就关闭与该用户的 连接.因此当一个请求发送到 ...
- Nagios安装部署
p.MsoNormal,li.MsoNormal,div.MsoNormal { margin: 0cm; margin-bottom: .0001pt; line-height: 150%; fon ...
- 在app中屏蔽第三方键盘
iOS8开放了安装第三方键盘的权限,但是在项目开发中,有些情况是需要禁用第三方键盘的.比如说,数字键盘上需要自定义按钮,但是在第三方键盘弹出时,按钮就覆盖在这上面了,在这中情况下,最好的办法是禁用第三 ...
- 原生js轮播图
//用原生js实现了一个简单的轮播图效果 <!DOCTYPE html><html> <head> <meta charset="UTF-8&quo ...