奋斗30天Javascript之正则表达式总结(Part1)

最近又在重新复习js,不怎么用有些就就生疏了,每天都要复习复习在复习才行,分享一下跟着大神学习的日常笔记记录。

有些錯誤可能是沒寫對中英字符,可能會報錯,都手寫的,見諒,废话不多说半句,开始复习吧!

正则的创建方式有两种:

1:var reg = /pattem/;

2:var reg = new RegExp('pattem');

RegExp对象的常用方法:

exec(str):检索字符串中制定的值,返回找到的值,并确定其位置。

test(str):检索字符串中是否有满足指定条件的值,并返回true或false。

如下例子:

var str="lihezhu";

var reg = /li/;

alert(reg.exec(str));//li

alert(reg.test(str));//true

正则表达式所支持的常用通配符:

. 可以匹配任何字符
\d 匹配0-9的所有数字
\D 匹配非数字
\s 匹配所有空白字符,包括空格,制表符,换行符,回车符等
\S 匹配所有非空白字符
\w 匹配所有的单词字符,包括0-9数字,26个英文字母和下划线
\W 匹配所有的非单词字符
\b 匹配单词边界
\B 匹配非单词边界

1:. 的用法

var str="lihezhu";

var reg = /./;

alert(reg.test(str));//true

注意:str里面有一个值则为true,如为空则为false

2-1:\d的用法

var str="123456";

var reg = /\d/;

alert(reg.test(str));//true

注意:str里面有一个为数字则为true

2-2:\d的用法

var str="4a";

var reg = /\d/;

alert(reg.test(str));//true

注意:str里面有一个为数字则为true

3-1:\D的用法

var str="123456k";

var reg = /\D/;

alert(reg.test(str));//true

注意:str里面有一个为数字则为true

3-2:\D的用法

var str="123456";

var reg = /\D/;

alert(reg.test(str));//false

注意:str里面全为数字则为false

4:\s的用法

var str="12 34 56";

var reg = /\s/;

alert(reg.test(str));//true

5:\S的用法

var str="123456";

var reg = /\S/;

alert(reg.test(str));//true

6-1:\b的用法

var str="lihezhu";

var reg = /\bl/;

alert(reg.test(str));//true

注意:str里面开头为l开头

6-2:\b的用法

var str="lihezhu";

var reg = /u\b/;

alert(reg.test(str));//true

注意:str里面最后一个字符为u开头

其他的就不多做介绍了。

*正则表达式所支持的常用通配符

[abc] 查找方括号之间的任何字符
[^abc] 查找任何不在方括号之间的字符
[0-9] 查找任何从0-9的数字
[a-z] 查找任何从小写a到小写z的字符
[A-Z] 查找任何从大写A到大写Z的字符
[A-z] 查找任何从大写A到小写z的字符
(red|green|yellow) 查找任何指定的选项

1-1:[abc]的用法

var str="lihezhu";

var reg = /[lh]/;

alert(reg.test(str));//true

注意:匹配到一个就可以

1-2:[abc]的用法

var str="lihezhu";

var reg = /[lx]/;

alert(reg.test(str));//true

注意:有l满足就可以

2-1:[^abc]的用法

var str="lihezhu";

var reg = /[^lx]/;

alert(reg.test(str));//true

注意:ihezhu为非reg里的,有一个满足不在reg 里面就为true

2-2:[^abc]的用法

var str="lihezhu";

var reg = /[^lihezhu]/;

alert(reg.test(str));//false

注意:这个就为false了,因为reg里面的单词在str里面都有。

3-1:[0-9]的用法

var str="123456";

var reg = /[0-9]/;

alert(reg.test(str));//true

注意:有一个为数字,则为true

3-2:[0-9]的用法

var str="1abc";

var reg = /[0-9]/;

alert(reg.test(str));//true

注意:有一个为数字,则为true

4:[A-Z]的用法

var str="a";

var reg = /[A-Z]/;

alert(reg.test(str));//false

单词这个比较jia简单,都差不多一个意思就不多说,说下最后一个重点:

5:(red|green|yellow)的用法

var str="reda";

var reg = /(red|green|yellow)/;

alert(reg.test(str));//true

注意:只要其中一个条件满足则为true,记得要加括号,不然会出错哈~~~

*正则表达式量词:

n+ 匹配任何包含至少一个n的字符串
n* 匹配任何包含零个或多个n的字符串
n? 匹配任何包含零个或一个n的字符串
n{X} 匹配包含X个n的序列的字符串
n{X,Y} 匹配包含X或Y个n的序列的字符串
n{X,} 匹配包含至少X个n的序列的字符串
n$ 匹配任何结尾为n的字符串
^n 匹配任何开头为n的字符串

1-1:n+的用法

var str="aabbcc";

var reg = /a+/;

alert(reg.test(str));//true

1-2:n+的用法

var str="bbcc";

var reg = /a+/;

alert(reg.test(str));//false

2-1:n*的用法

var str="aabbcc";

var reg = /a*/;

alert(reg.test(str));//true

2-2:n*的用法

var str="bbcc";

var reg = /a*/;

alert(reg.test(str));//true

3-1:n?的用法

var str="aabbcc";

var reg = /a?/;

alert(reg.test(str));//true(只有检测到有一个a就为true)

3-2:n?的用法

var str="bbcc";

var reg = /a?/;

alert(reg.test(str));//true

4-1:n{X}的用法

var str="aabbcc";

var reg = /a{2}/;

alert(reg.test(str));//true(a要在一个序列,并在这个序列要包含2个a)

4-2:n{X}的用法

var str="aabbcc";

var reg = /a{3}/;

alert(reg.test(str));//false

5-1:n{X,}的用法

var str="aabbcc";

var reg = /a{2,}/;

alert(reg.test(str));//true(至少包含2个a)

5-2:n{X,}的用法

var str="abbcc";

var reg = /a{2,}/;

alert(reg.test(str));//false(至少包含2个a)

6-1:n{X,Y}的用法

var str="aabbcc";

var reg = /a{1,3}/;

alert(reg.test(str));//true(最多3个a)

7-1:^n的用法

var str="aabbcc";

var reg = /^a/;

alert(reg.test(str));//true(确实是从a开头的)

7-2:^n的用法

var str="aabbcc";

var reg = /^b/;

alert(reg.test(str));//false

8-1:n$的用法

var str="aabbcc";

var reg = /c$/;

alert(reg.test(str));//true(确实是从c结尾的)

8-2:n$的用法

var str="aabbcc";

var reg = /m$/;

alert(reg.test(str));//false

*正则表达式修饰符

i 执行对大小写不敏感的匹配
g 执行全局匹配(查找所有匹配而非在找到一个匹配就停止)
m 执行多行匹配

1-1:i的用法

var str="AAbbcc";

var reg = /a/i;

alert(reg.test(str));//true

2-1:g的用法

var str="abaa";

var reg = /a/g;

alert(reg.test(str));//true

alert(reg.test(str));//true

alert(reg.test(str));//true

alert(reg.test(str));//false(因为全局只有3个a,所以为false)

3-1:m的用法

var str="b\naa";

var reg = /^a/m;

alert(reg.test(str));//true(第一行b开头没有a,第二行开头有a,故为true)

好了了解了这么多,开始实战个简单的邮箱把:

var reg = /^[0-9A-z_-]+@[0-9A-z_-]+\.(com|cn|org)$/

console.log(reg.test([email protected]))//true 

console.log(reg.test(112233zz163.com))//false(少了@符号)

猜你喜欢

转载自blog.csdn.net/weixin_41406727/article/details/88376759