认识正则
- 正则表达式
*
-
规则表达式
-
我们自己来书写,然后专门用来检测 字符串 是否符合规则
-
创建正则
- 1.var reg = /正则在这里边/
- 2.var reg = new RegExp('正则写在这里边')
-
*/
var reg = /abc/ console.log(reg) var reg2 = new RegExp('abcd') console.log(reg2)
-
正则常用方法
-
1.匹配
- test 匹配字符串中是否符合正则的规则
- true 符合
- false 不符合
-
2.捕获 */
var reg = /abc/ //匹配一段字符串中是否包含'abc' var str1 = 'a' var str2 = 'ab' var str3 = 'abc' var str4 = 'abcd' var str5 = 'a1b2c3' console.log(reg.test(str1)) console.log(reg.test(str2)) console.log(reg.test(str3)) console.log(reg.test(str4)) console.log(reg.test(str5))
正则的元字符
- 正则的元字符
*
- 正则表达式的符号,由两种符号组成
- 1.元字符
- 正则的规则符号
- 普通文本---正则的规定符号
- 2.修饰符
-
修饰整个正则表达式的符号
-
- 普通元字符
- 1.\d 表示一位数字(0-9)
- 2.\D 表示一位非数字
- 3.\s 表示一位空白内容(空格.缩进)
- 4.\S 表示一位非空白内容
- 5.\w 表示一位数字(0-9)字母(a-zA-Z)下划线(_)
- 6.\W 表示一位非数字字母下划线
- 7.. 表示一位非换行内容
- 8.\ 表示转义符 */
1.\d
var reg = /\d/ //匹配字符串中包含一位数字
console.log(reg.test('abcd'))
console.log(reg.test('abcd*(^&^('))
console.log(reg.test('123'))
2.\D
var reg = /\D/
console.log(reg.test('abcd'))
console.log(reg.test('abcd*(^&^('))
console.log(reg.test('123'))
3.\s
var reg = /\s/
console.log(reg.test('123456%^&*mfn'))
console.log(reg.test('123456%^ &*mfn'))
4.\S
var reg = /\S/
console.log(reg.test('123456%^&*mfn'))
console.log(reg.test('123456%^ &*mfn'))
console.log(reg.test(' '))
5.\w
var reg = /\w/
console.log(reg.test('abc'))
console.log(reg.test('a1b2c3'))
console.log(reg.test('a1b2_c3'))
console.log(reg.test('%$&^%*'))
6.\W
var reg = /\W/
console.log(reg.test('abc'))
console.log(reg.test('a1b2c3'))
console.log(reg.test('a1b2_c3'))
console.log(reg.test('%$&^%*'))
console.log(reg.test(' '))
7..
var reg = /./
console.log(reg.test('%$&^%*'))
console.log(reg.test('abc'))
console.log(reg.test('123'))
console.log(reg.test('\n')) // \n在JS中代表换行
8.\
var reg = /\d\.\d/
console.log(reg.test('abc'))
console.log(reg.test('1.2'))
正则的边界元字符
- 正则的边界元字符
-
1.^ 表示开头
var reg = /^\d/ console.log(reg.test('abcd')) console.log(reg.test('123')) console.log(reg.test('1abcd'))
-
2.$ 表示结尾
var reg = /\d$/ console.log(reg.test('abcd')) console.log(reg.test('123')) console.log(reg.test('abcd1'))
-
当开头与结尾共同使用时,表示字符串必须是规则里的内容
var reg = /abc/ console.log(reg.test('abcd')) var reg = /^abc$/ console.log(reg.test('abc')) console.log(reg.test('123')) console.log(reg.test('1abcd'))
-
*/
-
正则的限定元字符
- 正则的限定元字符
*
-
限定了前一个符号出现多少次
-
1.* 表示0~正无穷次
-
2.+ 表示1~正无穷次
-
3.? 表示0~1次
-
4.{n} 表示限定n次
-
5.{n,} 表示限定最少n次
-
6.{n,m} 表示最少n次,最多m次 */
-
1.*
var reg = /^\d*$/
console.log(reg.test('abc'))
console.log(reg.test('_99'))
console.log(reg.test('999'))
2.+
var reg = /^\d+$/
console.log(reg.test('abc'))
console.log(reg.test('_99'))
console.log(reg.test('999'))
console.log(reg.test(' '))
3.?
var reg = /^\d?$/
console.log(reg.test('abc'))
console.log(reg.test('9'))
console.log(reg.test('999'))
console.log(reg.test(' '))
4.{n}
var reg = /^\d{3}$/
console.log(reg.test('abc'))
console.log(reg.test('9'))
console.log(reg.test('999'))
console.log(reg.test('4444'))
5.{n,}
var reg = /^\d{3,}$/
console.log(reg.test('abc'))
console.log(reg.test('9'))
console.log(reg.test('999'))
console.log(reg.test('4444'))
6.{n,m}
var reg = /^\d{3,4}$/
console.log(reg.test('abc'))
console.log(reg.test('9'))
console.log(reg.test('999'))
console.log(reg.test('4444'))
console.log(reg.test('4444454'))
正则的特殊元字符
- 正则的特殊元字符
*
- 1.()
- 含义1:单独捕获
- 含义2:一个整体
- 2.|
- 含义:或 a|b
- 3.[] 包含中括号内其中一个即可
-
在中括号中可以书写任意数量的符号,但是字符串只要满足其中一个即可
-
4.[^] 非 不包含
-
在中括号内可以书写任意数量的符号,只要字符串不是其中某一个就行
-
5.- 到 至
-
通常和[] [^]连用
-
/[0-9]/ 正则代表的含义数字0-9,等价于\d
-
/[^0-9]非数字0-9,等价于/D
-
/[a-z]/ 字母[a-z]
-
/[0-9a-zA-Z_]/ 等价于\w */
-
- 1.()
1 2
var reg = /^(abc){2}$/
console.log(reg.test('abc'))
console.log(reg.test('abcabc'))
var reg = /a|b/
console.log(reg.test('a'))
3.[]
var reg = /^[abcd]$/
/**
* 含义:
* 字符串中,包含a b c d任意一个即可
*/
console.log(reg.test('a'))
console.log(reg.test('b'))
console.log(reg.test('c'))
console.log(reg.test('d'))
console.log(reg.test('abcd'))
4.[^]
var reg = /^[^abcd]$/
console.log(reg.test('a'))
console.log(reg.test('e'))
元字符或的分界线在哪里
- 元字符或的分界线在哪里
-
或的分界线为小括号或者正则的边界 */
-
var reg = /^abc|def$/
* 分析
* /^abc|def$/
* ^abc或者def$
*/
console.log(reg.test('abc12345678'))
console.log(reg.test('12345678def'))
var reg = /^ab(c|d)ef$/
/**
* 分析
* ^ab c或者d ef$
*/
console.log(reg.test('abcef')) //true
console.log(reg.test('abdef')) //true
console.log(reg.test('abaef')) //false
console.log(reg.test('abgef')) //false
正则的重复元字符
- 正则的重复元字符
- 符号:\数字
- 含义:表示重复第n个小括号的内容,并且要求和小括号的内容完全一致 */
- 符号:\数字
var reg = /^(abc|def)\1$/
/**
* \1重复前面第一个小括号内容,小括号内如果是'abc',那么\1的值也需要是'abc'
*/
console.log(reg.test('abcabc')) //true
console.log(reg.test('defdef')) //true
console.log(reg.test('abcdef')) //false
- 要求字符串是span或者p标签 */
var reg = /<(span|p)><\/\1>/
console.log(reg.test('<span></span>'))
console.log(reg.test('<p></p>'))
正则的标识符
- 正则的标识符
- 书写在正则外面,用来描述整个正则表达式
- 1.i
- 表示忽略大小写
- 2.g
- 表示全局 */
- 1.i
- 书写在正则外面,用来描述整个正则表达式
var reg = /^[abcd]$/i
console.log(reg.test('A'))
console.log(reg.test('a'))