定义一个正则表达式
const 变量名 = /表达式/
const reg = /前端/
匹配看字符串中有无前端俩字
正则对象上的一些方法
test()
用于查看正则表达式与指定的字符串是否匹配
const reg = /前端/
const res = reg.test('学前端,找黑马')
//匹配到返回true,匹配不到返回false
console.log(res)
exec()
查找符合规则的字符串
const reg = /前端/
const res = reg.exec('学前端,找黑马')
console.log(res)
replace()
用于替换字符串中符合规则的字符
const reg = /前端/
const str='学前端,找黑马'
const res = str.replace(reg,'java')
console.log(res)
match()
在字符串内检索指定的值,或找到一个或多个正则表达式的匹配
const reg = /前端/
const str='学前端,找黑马,前端就业前景好,前端工资高'
const res = str.match(reg)
console.log(res)
修饰符
i | 忽略大小写 |
g | 全局匹配 |
const reg = /a/i
console.log(reg.test('a'))//true
console.log(reg.test('ABC'))//true
const reg = /前端/g
const str='学前端,找黑马,前端就业前景好,前端工资高'
const res = str.replace(reg,'java')
console.log(res)
const reg = /前端/g
const str='学前端,找黑马,前端就业前景好,前端工资高'
const res = str.match(reg)
console.log(res)
元字符
边界符
单词边界 \b
const reg = /cat/g
const str = 'The cat scattered his food all over the room'
console.log(str.replace(reg,'dog'))
const reg = /\bcat\b/
const str = 'The cat scattered his food all over the room'
console.log(str.replace(regzi,'dog'))
字符串边界 ^ $
^:以...开头
$:以...结尾
const reg = /^a/
console.log(reg.test('apple')) //true
const reg = /c$/
console.log(reg.test('abc')) //true
^ $ :在一块,表示必须是精确匹配
const reg = /^a$/
中间写什么就只能匹配什么
console.log(reg.test('a')) //true
console.log(reg.test('aaa')) //false
console.log(reg.test('abca')) //false
量词
*:表示0次或更多次
const reg = /^a*$/
console.log(reg.test('a')) //true
console.log(reg.test('')) //true
console.log(reg.test('aaa')) //true
+:表示1次或更多次
const reg = /^a+$/
console.log(reg.test('a')) //true
console.log(reg.test('')) //false
console.log(reg.test('aaa')) //true
?:表示0次或1次
const reg = /^a+$/
console.log(reg.test('a')) //true
console.log(reg.test('')) //true
console.log(reg.test('aaa')) //false
console.log(reg.test('b')) //false
{n}:只能有n次
const reg = /^a{3}$/
console.log(reg.test('a')) //false
console.log(reg.test('')) //false
console.log(reg.test('aaa')) //true
{n,}:表示大于等于n次
const reg = /^a{2,}$/
console.log(reg.test('a')) //false
console.log(reg.test('')) //false
console.log(reg.test('aaa')) //true
console.log(reg.test('aa')) //true
{n,m}:n-m次
const reg = /^a{2,4}$/
console.log(reg.test('a')) //false
console.log(reg.test('')) //false
console.log(reg.test('aaa')) //true
console.log(reg.test('aa')) //true
字符类
[]:匹配字符集合
/[abc]/:匹配abc中的任意一个
连字符-
/[a-z]/:匹配a到z的26个字母中的任意一个
/[a-zA-Z]/:匹配26个英文字母,不区分大小写
^表示取反(需要写在[]里面)
/[^abc]/:匹配abc之外的任意一个
const reg = /[^0-9]/
console.log(reg.test('aaa111')) //true 能匹配到0-9之外的任意一个字符
.:匹配除换行符之外的任意一个字符
const reg =/./
console.log(reg.test(''));//true
console.log(reg.test('\n'));//false
console.log(reg.test('\r'));//false
预定义:
\d:匹配0-9之间任意一个数字字符;相当于[0-9]
/[0-9]/ <=> /\d/
\D:匹配任意一个非0-9数字的字符;相当于[^0-9]
\s:匹配任意一个空白字符,包括 空格、tab、换行符等;相当于[\t\r\n\v\f]
\S:匹配任意一个非空白字符;相当于[^\t\r\n\v\f]
\w:匹配任意的字母、数字、下划线;相当于[a-zA-Z0-9_]
\W:匹配除字母,数字和下划线以外的字符;相当于[^a-zA-Z0-9_]
分组和分支结构
分组
/ab+/ ab abbbbbbb
/(ab)+/ ab abababab
匹配有一个或多个ab连一块儿的;其中的()提供分组的功能
分组捕获
将YYYY-MM-DD格式的日期替换成MM/DD/YYYY(月日年),。
const reg = /^\d{4}-\d{2}-\d{2}$/
精确匹配;\d<=>[0-9];{4}4位数字
const reg = /^\d{4}-\d{2}-\d{2}$/
const date = '2023-01-05'
console.log(reg.test(date))//true
YYYY-MM-DD的匹配模式为/\d{4}-\d{2}-\d{2}/,它是将整个日期作为一个组(group)匹配起来,我们把这样的叫Group0
如果我们加上括号/(\d{4})-(\d{2})-(\d{2})/,那么分组就是下面的情况:
YYYY-MM-DD Group0
YYYY Group1
MM Group2
DD Group3
我们通过$符获取每个分组匹配的内容;eg.$1代表YYYY,$2代表MM ...
const reg = /^(\d{4})-(\d{2})-(\d{2})$/
const date = '2023-01-05'
console.log(date.replace(reg,'$2/$3/$1')) //01/05/2023
分支结构
| :表示匹配规则1或规则2
const reg = /(java)|(前端)/;
const str1 ="学前端,来黑马"
const str2 = "学java,也可以来黑马"
reg.test(str1)//true
reg.test(str2)//true