一、什么是正则

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

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有问题欢迎与我讨论,共同进步。

javascript 正则表达式(十)的更多相关文章

  1. 初学JavaScript正则表达式(十二)

    text / exec方法 text() var reg1 = /\w/; var reg2 = /\w/g; reg1.test('a') === true reg2.test('a') === t ...

  2. 初学JavaScript正则表达式(十)

    前瞻与后顾 断言 === assert 符合断言为正向,不符合为负向 例 'a2*3'.replace(/\w(?=\d)/g,'x') ------- x2*3 看看'\d'前面是不是'\w',如果 ...

  3. Python自动化 【第十八篇】:JavaScript 正则表达式及Django初识

    本节内容 JavaScript 正则表达式 Django初识 正则表达式 1.定义正则表达式 /.../  用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m ...

  4. javascript 正则表达式总结

    为什么要使用正则表达式 正则表达式通过由普通字符和特殊字符组成的文字模板完成对字符串的校验,搜索,替换.在javascript中类似这样 /^1\d{10}$/ 复制代码 上面的这个简单的正则用来匹配 ...

  5. JavaScript正则表达式,你真的知道?

    一.前言 粗浅的编写正则表达式,是造成性能瓶颈的主要原因.如下: var reg1 = /(A+A+)+B/; var reg2 = /AA+B/; 上述两个正则表达式,匹配效果是一样的,但是,效率就 ...

  6. 【JS】javascript 正则表达式 大全 总结

    javascript 正则表达式 大全 总结 参考整理了一些javascript正则表达式 目的一:自我复习归纳总结 目的二:共享方便大家搜索 微信:wixf150 验证数字:^[0-9]*$ 验证n ...

  7. 理清JavaScript正则表达式--上篇

    在JavaScript中,正则表达式由RegExp对象表示.RegExp对象呢,又可以通过直接量和构造函数RegExp两种方式创建,分别如下: //直接量 var re = /pattern/[g | ...

  8. 理清JavaScript正则表达式--下篇

    紧接:"理清JavaScript正则表达式--上篇". 正则在String类中的应用 类String支持四种利用正则表达式的方法.分别是search.replace.match和s ...

  9. JavaScript正则表达式详解(一)正则表达式入门

    JavaScript正则表达式是很多JavaScript开发人员比较头疼的事情,也很多人不愿意学习,只是必要的时候上网查一下就可以啦~本文中详细的把JavaScript正则表达式的用法进行了列表,希望 ...

  10. JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解

    二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...

随机推荐

  1. ESXI常用命令

    1.简介 VMware vSphere ESXi6.0常用命令使用,对于一些个人认为比较常用的命令进行总结,如果读者需要了解更多请访问VMware官网下载文档,链接如下:https://www.vmw ...

  2. HTML5在线预览PDF

    简介 PDF.js is a Portable Document Format (PDF) viewer that is built with HTML5. PDF.js is community-d ...

  3. ranlib 作用

    ar 命令用于更新,维护管理静态库. ranlib 命令用于 更新库的符号索引表. 当只执行了ar命令(用于更新)时, ld连接时会仍然报错,查找不到更新的变量或函数,此时需要用ranlib来更新库的 ...

  4. $Django redis内存数据库 (知识回顾cmd切换目录)

    知识小回顾 #切换盘 C:\Users\WangDong>f: F:\> #切换文件 F:\>cd redis F:\redis> #返回上一级 F:\DJ\dj8>cd ...

  5. python操作三大主流数据库(1)python操作mysql①windows环境中安装python操作mysql数据库的MySQLdb模块mysql-client

    windows安装python操作mysql数据库的MySQLdb模块mysql-client 正常情况下应该是cmd下直接运行 pip install mysql-client 命令即可,试了很多台 ...

  6. java使用RunTime调用windows命令行

    当Java需要调用windows系统进行交互时,可以使用Runtime进行操作. 例子: 1.调用window中获取关于java相关的进行信息 Runtime rt = Runtime.getRunt ...

  7. 增加一台web机注意事项

    2017年4月18日 15:23:57 星期二 增加一台web机时, 先不要挂载进lb 1. 需要将此机器的ip加入到其它服务的白名单内: 数据库, 缓存, 第三方接口等 2. 绑定hosts, 点点 ...

  8. UDP/TCP拾遗

    1.UDP的特点 (1)UDP 是无连接的,即发送数据之前不需要建立连接. (2)UDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制. (3)UDP 是面向报文的.UDP 没有拥塞控制 ...

  9. python bytes/str

    http://eli.thegreenplace.net/2012/01/30/the-bytesstr-dichotomy-in-python-3/

  10. Java中常用的加密算法小结

      散列算法(单向散列,不可逆) MD5(Message Digest Algorithm 5) SHA(Secure Hash Algorithm)   对称加密(加密解密使用同一密钥,速度快) D ...