正则表达式

115 阅读4分钟

图片.png

正则表达式实际是一个对象

1.创建正则表达式的对象
var reg = new RegExp("正则表达式","匹配模式");

var reg = new RegExp("a")
这个正则表达式可以检查 一个字符串中知否含有小写的 a

var str = "a";

在构造函数中可以传递一个匹配模式作为第二个参数
    可以是 
        i:忽略大小写
        g:全局匹配模式
    

正则表达式的方法:test()

可以检查一个字符串是否符合正则表达式的规则,符合返回true,否则false

var result = reg.test(str);

2.使用字面量来创建正则表达式
var 变量 = /正则表达式/匹配模式

reg = /a/i;  忽略大小写,查看正则表达式里有没有字母a

检查一个字符串,是否有a或b

reg = /a|b/    |:表示 或者 的意思
reg = /[ab]/   [][]里面也是 或 的关系  

检查一个字符串,是否有字母

reg = /[a-z]/  任意小写字母,有一个就可以
/[A-Z]/  任意大写字母
/[A-z]/  任意字母

检查一个字符串中是否含有abc或adc或aec

reg = /abc|adc|aec/  ==>   /a[bde]c/   

除了一个字符串以外的

[^ ] 除了
/[^ab]/    除了ab以外的都可以

任意数字

reg = /[0-9]/
reg = /[^0-9]/  除了数字都可以
字符串和正则表达式的关系

1.split():可以将字符串拆分成一个数组

var str = "1a2b3c4d5e6f";
var result = str.split("c");
根据c,来拆分一个数组

结果:1a2b3,4d5e6f

根据任意字母来将字符串拆分,可以传递一个正则表达式作为参数

 var result = str.split(/[A-z]/)
 结果:1,2,3,4,5,6

2.search()函数,搜索字符串中是否含有指定内容

str = "hello abc hello aec afc"
str.search("abc")
结果:6,abc第一次出现的索引的位置
如果搜索到指定内容,则会返回第一次出现的索引,如果没有搜索到返回-1.
他还可以接受一个正则表达式作为参数

result = str.search(/a[bef]c/)

3.match()函数,从一个字符串中提取出符合条件的内容

默认情况下,match只会找打第一个符合要求的内容,然后就会停止搜索,使用正则表达式的全局匹配模式,就可以匹配所有内容

也可以为一个正则表达式设置多个匹配模式,顺序也无所谓

var str = "1a2b3c4d5e6f";
result = str.match(/[A-z]/)  提取出任意(1个)字母
result = str.match(/[A-z]/g)
result = str.match(/[a-z]/ig)

match():会将匹配到的内容,封装到一个数组 返回。

4.replace():可以将字符串中指定内容替换为新的内容

result = str.replace("被替换的内容","新的内容")
result = str.repalce(/a/g,"@_@")  把所有a全部替换

5.通过量词可以设置一个内容出现的次数

var reg = /a{3}/      a正好出现3var reg = /ab{1,3}c/  ab出现13次都可以
var reg = /ab{3,}c/   ab出现3 到 以上 次数都可以

var reg = /ab+c/      ab至少要有1次出现
var reg = /ab*c/      ab出不出现 都可以
var reg = /ab?c/      ab只能出现 01

6.检查一个字符串是否以a开头

var reg = /^a/        /^ /表示开头

7.检查结尾

var reg = /a$/        以a为结尾
var reg = /^a$/       以a开头,并且a结尾

8.检查一个字符串中是否含有.

. 表示 任意字符
正则表达式里用  \ 表示转义字符
\.来表示真正的 . 符号

var reg = /\./

\\ 表示 \

图片.png

\w:任意字母、数字、_ [A-z0-9_]
\W:除了字母、数字、_ [^A-z0-9_]

\d:任意的数字  [0-9]
\D:除了数字    [^0-9]

\s:空格        
\S:除了空格

\b:单词边界   
\B:除了单词边界
例:检查一个字符串中是否含有单词 child
    str = "hello child ren"
如果用:reg = /child/,会返回true,可是并不是child
使用:reg = /\bchild\b/ child旁边的空格,这就是单词边界,标识是一个独立的单词

9.去除字符串中 前后的空格

replace("被替换的内容","新的内容")

str = str.replace(/^\s*/g,"") 去开头
str = str.replace(/\s*$/g,"") 去结尾

去除开头的多个空格 以及 结尾的多个空格
str = str.replace(/^\s*|\s*$/g,"")

10.断言匹配

?= 的用法:/abc(?=帅)/ 表示:只给后面数据为帅,并且前面是abc的,然后对abc进行操作