一、什么是正则
在常见的字符串检索和替换中,我们需要提供一种模式表示检索或替换的规则。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。
abc
[a-z]{4}
ddd
二、一个简单的例子
digital:数字
/ddd/.test("123") //true /ddd/.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有问题欢迎与我讨论,共同进步。