JS正则

JS的正则表达式使用new RegExp('re',[flag])新建一个对象,或者在//里面写都可以

支持正则的方法

方法 描述
exec 5一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回 null)。
test 一个在字符串中测试是否匹配的RegExp方法,它返回 true 或 false。
match 一个在字符串中执行查找匹配的String方法,它返回一个数组,在未匹配到时会返回 null。
matchAll 一个在字符串中执行查找所有匹配的String方法,它返回一个迭代器(iterator)。
search 一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。
replace 一个在字符串中执行查找匹配的String方法,并且使用替换字符串替换掉匹配到的子字符串。
split 一个使用正则表达式或者一个固定字符串分隔一个字符串,并将分隔后的子字符串存储到数组中的 String 方法。

搜索和替换

1
2
3
4
5
let str = 'Hello world 1234 ./,;';
//正则表达式的规则写在‘/ /’里
let s2 = str.search(/[1-9]/i);/*也可以传递字符串,i表示忽略大小写,会返回搜索到的第一个字符的索引*/
str.replace(/[a-zA-Z]/g,'test');/*g表示全局,这里代表将所有字母替换成test*/
console.log(s2);

判断

可以知道某字符串是否满足规则

1
2
let re = /^#/;
re.test('#这是一个注释');/*返回true*/

切分字符串

1
'a,b, c  d'.split(/[\s,]+/); // ['a', 'b', 'c', 'd']

分组

1
2
3
var re = /^(\d{3})-(\d{3,8})$/;
re.exec('010-12345'); // ['010-12345', '010', '12345']
re.exec('010 12345'); // null

通过exec可以提取分组里面的子串,返回一个数组,第一个元素是匹配到的整个字符串,后面跟着子串

贪婪

默认匹配是贪婪模式,即尽量往多的匹配

1
2
var re = /^(\d+)(0*)$/;
re.exec('102300'); // ['102300', '102300', '']

非贪婪匹配

1
2
var re = /^(\d+?)(0*)$/;
re.exec('102300'); // ['102300', '1023', '00']

特殊标志

标志 描述
g 全局搜索。
i 不区分大小写搜索。
m 多行搜索。
s 允许 . 匹配换行符。
u 使用unicode码的模式进行匹配。
y 执行“粘性”搜索,匹配从目标字符串的当前位置开始,可以使用y标志。
作者

manu

发布于

2020-04-21

更新于

2023-01-06

许可协议


:D 一言句子获取中...