一、什么是正则

在常见的字符串检索和替换中,我们需要提供一种模式表示检索或替换的规则。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。

abc

[a-z]{4}

\d\d\d

二、一个简单的例子

digital:数字

/\d\d\d/.test("123")
//true
/\d\d\d/.test("abc")
//false
new RegExp("Bosn").test("Hi,Bosn")
//true

//2个斜杠括起来或者用new RegExp()表示正则,test方法如果匹配返回true,不匹配返回false。

三、 正则基础

用户名必须是数字,字母或者下划线,可以直接应用\w。 \w其实就是[A-Z0-9z-Z_]。

四、特殊符转义

/^abc/.test('^abc')
//false
/\^abc/.test('^abc')
//true

五、分组

六、重复

七、三个Flag(标志位)

  1. global:全局查找
  2. ignoreCase:不区分大小写
  3. multiline:是否需要跨行检索

gim或者mgi顺序没有关系。

八、RegExp对象属性

常见的RegExp对象属性有4个:

  1. global
  2. ignoreCase
  3. multiline
  4. source

/abc/g只有一个global标签,所以global返回true,ignoreCase和multiline返回false。

source是正则的内容,所以/abc/g这样一个正则返回"abc"这样一个字符串。

/abc/g.global
//true
/abc/g.ignoreCase
//false
/abc/g.multiline
//false
/abc/g.source
//"abc"

九、RegExp对象方法

  1. compile
  2. exec
  3. test
  4. toString

exec和字符串的match()方法比较类似,只是字符串的macth是一个字符串match()一个正则,而exec()是一个正则exec一个字符串。

/abc/.exec("abcdef")
//["abc"] 匹配到的结果是abc

toString返回整个正则的内容

/abc/.toString()
//"/abc/"

compile是以特别的方法,它可以改变一些正则的属性。

var reg=/abc/;
reg.compile("def"); //修改正则的内容
reg.test("def");
//true 匹配成功

十、字符串String类型与正则相关的方法

1、String.prototype.search

"abcabcdef".search(/(abc)\1/);
//

字符串"abcabcdef"按照正则去检索一个位置,去匹配一个分组(abc)再去引用,等价于abcabc,相当于“abcabcdef”检索一下“abcabc”的位置,所以返回0。表示从0位置开始找到了一个符合正则的字符串。

2、String.prototype.replace

"aabbbbcc".replace(/b+?/,"1")
//"aa1bbbcc"

把"aabbbbcc"中的b改成1,只更改了第一个b,我们用的是+?非贪婪算法,也就是匹配尽可能少,所以职匹配到了第一个1。

3、String.prototype.match

类似于search,只是说匹配出多个结果。

"aabbbbcc".match(/b+/);
//["bbbb"]

贪婪算法,匹配尽可能多。

"aabbbbccbbaa".match(/b+/g);     //用了一个g标签
//["bbbb", "bb"]

匹配到第一个结果后还会继续往下匹配。匹配出所有结果, 所以结果有2组数据。

4、String.prototype.split

split把一个字符串做分割,参数可以是正则。

"aabbbbccbbaa".split(/b+/);
//["aa", "cc", "aa"]

不管几个b都可以作为分割,所以分割完了以后就是["aa","cc","aa"]。

应用:

            var reg= /^([a-zA-Z]{8}\d{8})$/;
if(!reg.test(psd)){
$("#msg2").html("*请输入字母+数字的合法密码");
$("#msg2").show();
return;
}

十一、例子

去空格

str.replace(/(^\s*)|(\s*$)/g,"").

本文作者starof,因知识本身在变化,作者也在不断学习成长,文章内容也不定时更新,为避免误导读者,方便追根溯源,请诸位转载注明出处:http://www.cnblogs.com/starof/p/6418432.html有问题欢迎与我讨论,共同进步。

最新文章

  1. 1.4 基础知识——GP2.2 计划 与 GP2.8 计划跟踪
  2. iOS开发——高级篇——换肤、静态库
  3. printf("%*s%s%*s",——)是什么?
  4. js——页面回到顶部
  5. HTML5面试题-备
  6. HTML5可以省略全部标记的元素
  7. python笔记:#012#函数
  8. 1.3 History of Android Plug-in Programing
  9. [Swift]LeetCode348. 设计井字棋游戏 $ Design Tic-Tac-Toe
  10. PHP 面向对象之单例模式-有些类也需要计划生育
  11. Python3 tkinter基础 Scale orient 横竖 resolution单步步长 length 长度 tickinterval 指示刻度
  12. Day 4-5 序列化 json & pickle &shelve
  13. A1092. To Buy or Not to Buy
  14. linux 查看和修改文件时间
  15. mysql的查询使用explain的讲解
  16. 【干货】Linux内存数据的获取与转存 直捣密码
  17. hadoop伪分布模式安装
  18. 791. Custom Sort String
  19. 使用Crypto++库的CBC模式实现加密(二)
  20. Android的Parcelable中describeContents方法的作用

热门文章

  1. Win2008R2配置WebDeploy发布网站
  2. HDU - 1160 FatMouse's Speed 动态规划LIS,路径还原与nlogn优化
  3. 030_CORS深究
  4. $Django Rest Framework-认证组件,权限组件 知识点回顾choices,on_delete
  5. MySQL(介绍,安装,密码操作,权限表)
  6. Linux下怎样搜索文件
  7. axis1 创建service服务端 , axis1 客户端
  8. 原来商家登录系统的commonjs
  9. Windows Server 2016 + SCO 2016 安装及配置介绍
  10. js去除空格12种方法