最近又在重新复习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(少了@符号)