javascript 正则表达式(十)

一、什么是正则

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

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/);
//0

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

posted @ 2017-02-20 14:30  starof  阅读(486)  评论(0编辑  收藏  举报