您的位置:首页 > Web前端 > JavaScript

javascript 正则表达式(十)

2017-02-20 14:30 441 查看

一、什么是正则

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

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(标志位)

global:全局查找

ignoreCase:不区分大小写

multiline:是否需要跨行检索



gim或者mgi顺序没有关系。

八、RegExp对象属性

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

global

ignoreCase

multiline

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对象方法

compile

exec

test

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有问题欢迎与我讨论,共同进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: