正则表达式
正则表达式用来定义一些字符串的规则,计算机可以根据正则表达式,来检查一个字符串是否符合规则或者将字符串中符合规则的内容提取出来
创建正则表达式对象
var reg = new RegExp("正则表达式","匹配模式");
//匹配模式 :i 忽略大小写 g 全局匹配模式
使用字面量创建:var reg = /正则表达式/匹配模式
使用构造函数创建更为灵活,可以传变量;但是字面量创建更为简单。
使用test方法可以检查一个字符串是否符合正则表达式的规则
1、reg = /a/i 检验字符串中是否含有a
2、reg = /a | b/ 检验字符串是否含有a或b [ab] == a | b
3、[a-z] 任意小写字母 [A-Z] 任意大写字母 [A-z] 任意字母
4、检查字符串中是否含有abc或adc或aec a[bde]c
5、/ [ ^ab ] / 检查字符串除了ab外的其他字符串 a b ab都返回false 但是abc会返回true
6、[0-9] 任意数字 [ ^0-9] 除了数字外的其他字符串 123a567返回true
字符串和正则相关的方法
1、split方法
可以传递进一个正则表达式作为参数,这样方法将会根据正则表达式去拆分。即使不指定全局匹配,也会全部拆分
var str = "1a2b3c4d5e6f7g";
result = str.split(/[A-z]/); //["1","2","3","4","5","6","7"]
2、search方法
可以搜索字符串是否含有指定内容,如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到则返回-1.不同的是它会接受一个正则表达式作为参数。该方法只能查找到第一个,即使设置全局匹配也没用
var str = "hello abc adc aec";
result = str.search(/a[bde]c/)
3、match方法
可以根据正则表达式,将字符串中符合条件的内容提取出来。默认该方法只会找到第一个符合要求的内容,找到以后停止检索,可以设置匹配模式为全局匹配模式,这样就会匹配所有符合的内容
match会将匹配到的内容封装到一个数组中返回
4、replace方法
可以将字符串中指定内容替换为新的内容。需要两个参数:被替换内容(可以传进一个正则表达式),新替换内容。默认只替换第一个
量词
{n} 正好出现n次,通过量词可以设置一个内容出现的次数,但是量词只对它前面的一个内容起作用
{m,n} 出现m到n次 {m,} 出现m次及以上
- 表示出现至少一次 *表示0个或多个 ?表示0个或1个
/^a/ 表示一个字符串是否以a开头,注意和中括号里的表示不同;$表示以什么结尾 / a $ /表示以a结尾
var reg = /ab{3}/; "abbb"返回true
var reg = /b{3}/; "bbbb"也返回true
//找是否出现连续的3个b就行
reg = /(ab){3}/; "ababab"返回true
reg = /a{1,3}/; a出现1-3次都行
reg = /^a$/; "aaa"返回false 要以此a开头此a结尾 "a"返回true
reg = /^a|a$/; //以a开头或者以a结尾
reg = /\\/; "b.\\"返回true
eg:手机号规则 : ^1[3-9][0-9]{9}
检查一个字符串中是否含有 . .表示任意字符。如果检查该字符,在正则表达式中使用\作为转义字符
注意:使用构造函数时,由于它的参数是一个字符串,而\是字符串的转义字符,所以需要用\来代替\
1、\w 任意字母、数字、_ 相当于[A-z0-9_]
2、\W 除了字母、数字、_ 相当于[ ^A-z0-9_]
3、\d 任意数字
4、\D 除了数字
5、\s 空格
6、\S 除了空格 “12 3"返回true?除了空格还有其他字符;” "返回false
7、\b 单词边界
8、\B 除了单词边界
//匹配开头和结尾的字符串
var str = " he llo ";
result = str.replace(/^\s*|\s*$/g,"");
^\w{3,} (. \w+)* @ [A-z0-9]+ (.[A-z]{2,5}){1,2}$