正则表达式
以某种模式去匹配字符串
正则表达式定义的2种形式
- let reg=new RegExp(“正则模式”)
- let reg=/正则模式/
正则方法
- test()正则匹配字符串,成功为真,否则为假
reg.test(str)
- search()字符串查找正则,成功返回索引号,否则返回-1
str.search(reg)
- math()字符串查找正则,成功返回匹配成功的数组,否则返回null
str.math(reg)
- replace()字符串查找正则,成功则替换字符串
str.replace(reg.'替换的字符串')
- exec()正则匹配字符串,里面有个2属性index(字符串匹配模式位置起始位置)input(要查找的字符串)
<script>
function test(){
var email='xiaoming028@qq.com'
var reg=/[0-9a-zA-Z]+@[0-9a-zA-Z]+\.com/
if(reg.test(email)){
console.log('正确');
}else{
console.log('错误');
}
}
test()
//结果正确
function test2(){
var password='Xiaoming123456'
var reg=/^[A-Z][0-9a-zA-Z]{13}/
if(reg.test(password)){
console.log('正确');
}else{
console.log('错误');
}
}
test2()
//结果正确
function test3(){
var phone='18012345678'
var reg=/^1[3|5|8][0-9a-zA-Z]{9}$/
if(reg.test(phone)){
console.log('正确');
}else{
console.log('错误');
}
}
test3()
//结果正确
function test4(){
var tel='028-12345678'
var reg=/^0[0-9]{2}-[0-9]{8}$/
if(reg.test(tel)){
console.log('正确');
}else{
console.log('错误');
}
}
test4()
//结果正确
function text5(){
var str='he is boy,this is apple'
var reg=/\bis/g
var newStr=str.replace(reg,'are')
console.log(newStr);
}
text5()
//结果he are boy,this are apple
function text6(){
var str='hello word1'
var reg=/\d/
let matches=reg.exec(str)
console.log(matches.index);
console.log(matches.input);
console.log(matches[0]);
}
text6()
//结果 10
hello word1
1
</script>
连接符
符号 | 含义 |
---|---|
[0-9] | 0-9数字 |
[a-z] | 从a到z小写字母 |
[A-Z] | 从A到Z大写字母 |
[0-9a-zA-Z] | 匹配数字和字母 |
限定符
符号 | 含义 |
---|---|
+ | 重复一次以上 |
* | 重复任意次数 |
? | 重复最多一次 |
{m} | 重复m次 |
{m,} | 重复最少m次 |
{m,n} | 重复m到n次 |
[^m] | 除m外任意字符 |
定位符
符号 | 含义 |
---|---|
^ | 限定开始字符 |
$ | 限定结尾字符 |
\b | 这是一个单词 |
\B | 这是一个非单词 |
修饰符
符号 | 含义 |
---|---|
g | globa全选 |
i | ignore case不区分大小写 |
m | multiple lines多行搜索 |
注:系统查找时找到第一个就停止了,如果要找完正则表达式后加g
正则转义字符
符号 | 含义 |
---|---|
数字和字母字符 | 自己本身 |
. | 匹配除换行符\n和回车符\r之外任意字符 |
\f | 匹配换页符 |
\n | 匹配换行符 |
\r | 匹配回车符 |
\t | 匹配制表符 |
\v | 匹配垂直制表符 |
\\ | 匹配\ |
\" | 匹配" |
\’ | 匹配’ |
\d | 匹配一个数字 |
\D | 匹配除数字外任意字符 |
\w | 匹配数字,字母,下划线 |
\W | 除数字,字母,下划线 |
\s | 匹配Unicode空白字符,空格,制表,换行等等 |
\S | 除Unicode空白字符 |
注:
- Unix系统中,每行结尾只有“<换行>”,即\n
- windows系统中,每行结尾有“<换行><回车>”,即\n和\r
- Mac系统中,每行结尾“<回车>”,即\r
贪婪模式和懒惰模式
- 系统默认贪婪模式,总是按最多次数执行
- 在正则表达式中有关次数限定符后加?可以转变为懒惰模式,只执行最少次数
<script>
//贪婪模式
let str='132342451441'
let reg=/\d{2,5}/
console.log(str.match(reg));
//结果13234
//懒惰模式
let str2='132342451441'
let reg2=/\d{2,5}?/
console.log(str2.match(reg2));
//结果13
</script>
正则工具网站
https://regexper.com/