正则表达式中的常用字符
正则表达式是很多语言都不可缺少的,今天我们一起来看看javaScripe中正则表达式常用的一些特殊字符。
那到底,什么是正则表达式呢?我们为什么要用到它呢?
-
定义:
正则表达式(英语:Regular Expression,在代码中常简写为regex、regexp或RE)使用单个字符串来描述、匹配一系列符合某个句法规则的字符串搜索模式。 -
创建正则对象的两种方法
(1)通过构造函数创建(new)
( 2 )通过字面量创建(/ /)
//通过构造函数创建
var RegExp = new RegExp()
//通过字面量创建(/中间可以加任何内容/)
var RegExp1 = /123/
- 正则表达式中的常用字符
-基本元字符
(1) 字符 . 表示任一个非换行的字符
var reg = /wewr@\.3124314/
var str = 'wewr@.3124314'
console.log(reg.test(str)) //true
(2)字符 [ ]方括号用于查找某个范围内的字符:
//匹配出现在[]中的字符
var reg1 = /[s]/
var str1 = 'sas'
console.log(reg1.test(str1)) //true
//查找符合a-z之间的字符,符合返回true,不符合返回false
var reg = /[a - z]/
var str = '12233'
console.log(reg.test(str))//false
(3)字符 | 匹配表达式中的一个就行
var reg2 = /a|b|c/
var str1 = 'sas'
console.log(reg2.test(str1)) //true
(4)
- 限定元字符
(1)字符* 紧跟前面的一个字符或一组字符出现 0 次到多次
var reg = /bo*/
var str = ' A bird warbled'
var str1='A ghost booooed'
var str2='A jkeoitfret'
console.log(reg.test(str))//匹配0次。所以返回true
console.log(reg.test(str1))//匹配多次。所以返回true
console.log(reg.test(str2))//没找到b,返回false
(2) 字符+ 紧跟在前面的字符出现 1 次到多次
var reg = /bo+/
var str = ' A bird warbled'
var str1 = 'A ghost booooed'
var str2 = 'A jkeoitfret'
var str3 = 'A jibojshduw'
console.log(reg.test(str)) //匹配0次。所以返回false
console.log(reg.test(str1)) //匹配多次。所以返回true
console.log(reg.test(str2)) //没找到b,返回false
console.log(reg.test(str3)) //匹配一次。所以返回true
(3)字符 ? 紧跟在前面的字符出现 0 次或 1 次
var reg = /bo?/
var str = ' A bird warbled'
var str1 = 'A ghost booooed'
var str2 = 'A jkeoitfret'
var str3 = 'A jibojshduw'
console.log(reg.test(str)) //匹配0次。所以返回true
console.log(reg.test(str2)) //没找到b,返回false
console.log(reg.test(str3)) //匹配一次。所以返回true
(4)字符{n} 这里的n是一个正整数。匹配前面的n个字符。
var reg = /p{2}/
var str = 'pink'
var str1 = 'ppink'
var str2 = 'pipnk'
var str3='ppppppppink'
console.log(reg.test(str)) //只有一个p,所以不匹配,返回false
console.log(reg.test(str1)) //匹配两个'a',返回true
console.log(reg.test(str2))//false
console.log(reg.test(str3))//匹配前面的两个,返回true
(4)字符{n,} 这里的n是一个正整数。匹配至少n个前面的字符。
var reg = /p{2}/
var str = 'pink'
var str1 = 'ppink'
var str2='ppppink'
console.log(reg.test(str)) //只有一个p,所以不匹配,返回false
console.log(reg.test(str1)) //匹配两个'a',返回true
console.log(reg.test(str2))//匹配超过两个p,返回true
(5)字符{n,m} 这里的n和m都是正整数。匹配至少n个最多m个前面的字符。
var reg = /p{1,3}/
var str = 'pink'
var str1 = 'ppink'
var str2 = 'ink'
var str3 = 'ppppppppink'
console.log(reg.test(str)) //匹配一个p,返回true
console.log(reg.test(str1)) //匹配两个'p',返回true
console.log(reg.test(str2)) //无p不匹配,返回false
console.log(reg.test(str3)) //可以匹配前面的三个,返回true
- 首尾表达
(1)字符^ 表示必须以 xxx 开头
//表示必须以a开头
var reg = /^a/
var str = 'abcd'
var str1 = 'Abcd'
console.log(reg.test(str))//true
console.log(reg.test(str1))//false
(2)字符$
意义:与^类似, $ 表示必须以 xxx 结尾
//表示必须以a结尾
var reg = /a$/
var str = 'abcd'
var str1 = 'Abca'
console.log(reg.test(str)) //false
console.log(reg.test(str1)) //true
- 其他
(1)\d 匹配一个字数字符,/\d/ = /[0-9]/
//随机生成0-9中的两个数字
var reg = /\d{2}/
//随机生成2-5中的一个数字
var reg = /\d[2-5]/
(2) [\b] 匹配一个退格符
(3) \b 匹配一个单词的边界
(4)\B 匹配一个单词的非边界
(5)\cX 这儿,X是一个控制符,
(6) \D 匹配一个非字数字符,
(7)\n 匹配一个换行符
(8)\r 匹配一个回车符
(9)\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
(10)\S 匹配一个非空白字符,
(11)\t 匹配一个制表符
(12)\v 匹配一个重直制表符
下面我们通过一些例题来熟悉一下这些字符的用法
1、手机号码:首位为1并且第二位为3、5、6、7、8、9,写出相应的表达式
var reg = /^1[3,5,6,7,8,9]\d{9}$/
2、昵称由英文、数字长度为6-10个字符
var reg = /[^a-zA-Z0-9]{6-10}$/
3、验证用户密码:正确格式为:以字母开头,长度在6-18之间,只能包含字符、数字和下划线。
// 字符\w:匹配所有的数字和字母以及下划线,等价于[A-Za-z0-9_]。
var reg = /^[a-zA-Z]\w{5,17}$/