1 正则表达式(规则表达式)
'正则表达式是对字符串操作的一种逻辑公式',
就是事先定义好的一些特定字符,以及这些特定字符发组合,
组成一个"规则字符串",这个"规则字符串"用来表达对字符串的一种过滤逻辑
- 正则表达式是一个字符串
- 表示一种规则
- 用(有)自己特定的编写语法
- 用于对其它字符串进行验证或者匹配
2 与其他语言的关系
- 它是一独立的体系,不依赖其他任何编程语言,(但是由于过于它很强大),其它的编程语言里面种会提供对正则表达式的支持
- 正则表达式在编程语言中的写法都是统一的(php,java,js...中的正则表达式都是一样的)
3 案例
※※生日的判断
<form action="http://www.baidu.com">
<input type="text" pattern="\d{4}-\d{2}-\d{2}" required placeholder="请输出入生日"/>(*示例:1990-10-11)
<input type="submit" value="提交"/>
</form>
4 js中的正则
4.1 创建(RegExp)
1)构造器创建:
var r1 = new RegExp( "a" );
var r2 = new RegExp( "a","gim" )
new RegExp(pattern, attributes);
2)字面量创建(类比创建对象,都有两种方法)
- 基本格式
var r = /字符串/;
说明:类比如果是字符串,则前后都要加( " " )
如果是对象前后加{ }
如果是数组前后加[ ];
如果是正则前后加/ /(界定符);
类比:使用对象的属性:用[]
当属性名是一个变量是,只能使用-[];
当正则表达式是一个变量是,则只能使用RegExp;
4.2 正则表达式的构成
- 1)界定符
- 2)原子(构成正则表达式的最基本的单位,必不可少)
- 3)元字符(修饰原子的)
- 4)模式修正符
- I (忽略大小写)
- G(全局匹配)
- M(多行)
5 原子
5.1 一个字符
- 表示一个字符
A-Z,a-z,0-9基本的字符,它们只能表示一个字符
/a/只能表示 a;
/abc/只能表示 abc.
5.2 一类字符
- 表示多个
\d表示数字:一个数字,即0-9;
\D表示:非数字;
\s:空格;
\S:非空格;
\w:表示"字";
\W:表示非"字";
6 元字符
- 作用:修饰它前面的一个原子,只能修饰一个原子,并且必须在它的前面
6.1 开始&&结束
- ^ 开始(表示目标字符串应该以它后面的原子开始)
console.info(/f/.test("asfsd"));//true
console.info(/^f/.test("asfs"));//false
console.info(/^f/.test("fasfsd"));//true
- 2)$结束(表示目标字符串应该在它后面的原子结束)
console.info(/af$/.test("fasfsdf"))//false
console.info(/af$/.test("fasfsaf"))//true
6.2 数量的表示
- 1)+ 表示前面的 一个原子要重复一个以上
console.info(/f+/.test("abcdeg"));//false
console.info(/f+/.test("abcdeffg"));//true
- 2)? 表示前面的一个原子要重复0次或者一次
console.info(/f+/.test("abcdef"));//false
console.info(/f?/.test("abcdefg"));//true
console.info(/f?/.test("abcdeffg"));//true
- 3){最大值,最小值}表示前面的一个原子要重复[最小值,最大值]次;
console.info(/\d{1,2}/.text("0"));//true
console.info(/\d{1,2}/.text("01"));//true
console.info(/\d{1,2}/.text("012"));//true
- 4)\d{m}一定要出现的m次
console.info(/\d{3}/.text("0"));//false
console.info(/\d{3}/.text("00"));//false
console.info(/\d{3}/.text("000"));//true
console.info(/\d{3}/.text("0000"));//true
- 5)\d{m,}前面的原子出现至少m次
console.info(/\d{3,}/.text("00"));//false
console.info(/\d{3}/.text("000"));//true
console.info(/\d{3}/.text("0000"));//true
6.3 转义的表示
- :作用改变字符的原来意思(和逻辑非内饰 相反的进行取结果)
- \b表示一个边界.空格
console.log(/\bis\b/.test("abc is land"));//true
-3) \B表示一个非边界
console.log(/is\B/.test("abcisland"));//true
6.4 常见的分组
- 1)表示分组:把几个原子打包成一个大原子
console.log(/a(bc){2}/.test("abcc"));//false
console.log(/abc{2}/.text("abcc"));//true
6.5 逻辑的关系
格式:[原子1 原子2 原子3.....];
作用:[]内的原子集合中,必须要有一个
console.log(/1[012]-[0123]\d/.test("10-10));//true
console.log(/1[012]-[0123]\d/.test("101-10));//false
console.log(/1[012]-[0123]\d/.test("111-10));//true
- 1)[ ]中的原子任何一个都可以
- 2)[ ]只能表示一个原子.
7 案例一
- 网页中的常见的匹配验证