JavaScript基础之十(正则表达式)

这个部分其实一直都是知道,了解,写的时候查下资料,但是没有整理过,这里整理下方便查阅。

声明方式三种

/ab+c/i;
new RegExp(‘ab+c’, ‘i’);
new RegExp(/ab+c/, ‘i’);

文本字符

\0:null  \t:tab键  \n:换行符  \v:垂直tab  \f:换页  \r:回车  \x:后面跟16进制数字来表示拉丁字符  \u:后面跟16进制数字来表示Unicode字符来

\cX:匹配Ctrl-M

 

字符类

.:匹配任何字符,换行除外

\w:匹配ASCII字符(a-z,A-Z,0-9)==[a-zA-z0-9_](注意包含一个_).取反\W

\s:任何空格字符(空格,tab,回车),不包含空字符串。取反\S

\d:数字==[0-9],取反\D==[^0-9]

^:放在[^]表示非

 

锚字符

\b和[\b]:\b匹配单词边界,[\b]匹配是否包含’\b’,取反\B(不是单词边界)

^:一行的起始位置 例如:/^a/.test(‘A abc’)==>false /^a/.test(‘a Abc’)==>true

$:一行的结束位置 例如:/a$/.test(‘a cbA’)==>false /a$/.test(‘a cba’)==>true

(?=p):匹配字符后面跟字符符合p,例如x(?=y) 匹配x但是x后面的必须是y

(?!p):匹配字符后面跟字符不符合p,例如x(?!y) 匹配x但是x后面的不是y

 

重复相关

{n,m}:匹配次数>=n&&<=m

{n,}:匹配次数>=n次

{n}:匹配n次

?:匹配0次或1次=={0,1}

+:匹配>=1次=={1,}

*:匹配>=0次=={0,}

 

贪婪重复(匹配)

上面匹配默认情况下是贪婪匹配:意思是尽可能多的匹配字符。非贪婪匹配:在后面添加一个?(??,+?,*?),尽可能少匹配字符。代码说明两者区别:

 

可选,分组,引用字符

|:可选(从左到右)  ():分组(捕获)  (?:):非捕获分组

分组和非捕获分组到底有什么差别,代码说明如下:

 

正则修饰符

i:忽略大小写  g:在全局匹配,在多行文本中默认匹配第一行,加g就可以匹配对行。例如:

控制台输出:

 m:至于m我确实不知道有啥用,试过几个例子都没什么差别,多行里面加m和不加m都一样,如果哪位知道请给我一个例子我看看差别,万分感谢。

 

字符串模式匹配方法

search:用法str.search(re)  返回匹配的第一个字符串的首字符的位置索引(从0开始计算) 例如’javascript’.search(/script/)==>4

replace:用法str.replace(re,str2)  返回匹配并且替换以后的字符串  str2可以是具体的字符串,也可以是$1(第一个子匹配串,$n),

也可以是function(match,$1,$2…) 第一个match为匹配整串,后面依次表示匹配第1个分组..2个分组

match:用法str.match(re)  返回一个数组,如果使用g标识,则返回所有的匹配结果。例如”1 + 2 = 3″.match(/\d+/g)==>[“1”, “2”, “3”]

split:用法str.split(str或re)  返回一个数组 例如”123,456,789″.split(“,”)==>[“123”, “456”, “789”]

例如”1 , 2, 3, 4 , 5″.split(/\s*,\s*/)==>[“1”, “2”, “3”, “4”, “5”]

注意这个里面字符串的分隔符有空格,如果单纯用’,’分割效果不理想,所有需要使用正则

exec:用法re.exec(str)  返回一个数组,包含匹配的字符串,子串,首次出现的位置索引,输入的str。

例如/a(bc)/.exec(‘0123abcdef’)==>[“abc”, “bc”, index: 4, input: “0123abcdef”](需要在js代码里面执行,Chrome控制台执行不会返回完整信息)

test:re.test(str) 是否匹配(true/false)

 

工作中碰到需要自己写正则的情况不需要立即就去百度或Google,试着自己写一写。即便直接拿来用的正则表达式,最好自己完全能够看懂,理解,这样才会有提高。

javascript
作者:张雪飞
出处:https://zhangxuefei.site/p/853
版权说明:欢迎转载,但必须注明出处,并在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

发表评论

电子邮件地址不会被公开。 必填项已用*标注