正则表达式 /g
正则表达式是一种用来匹配字符串模式的工具,它可以在字符串中搜索、替换和提取目标子字符串。在JavaScript中,正则表达式是由RegExp对象表示的。
常见的正则表达式类型有:限定符、转义字符、字符类和分组构造。
限定符
限定符用来控制匹配出现的次数,常见的限定符有:
*
匹配前面的字符出现0次或多次。+
匹配前面的字符出现1次或多次。?
匹配前面的字符出现0次或1次。{n}
匹配前面的字符恰好出现n次。{n,}
匹配前面的字符出现n次或更多次。{n,m}
匹配前面的字符出现n到m次。
示例代码:
const str = 'hello world, hello regex.';
// 匹配hello出现1次或多次
console.log(str.match(/hello+/)); // ["hello"]
console.log(str.match(/hello{1,}/)); // ["hello"]
// 匹配hello出现0次或1次
console.log(str.match(/hello?/)); // ["hello"]
console.log(str.match(/hello{0,1}/)); // ["hello"]
转义字符
转义字符用来匹配特殊字符,例如\
,^
,$
,*
,+
,?
,.
等。
示例代码:
const str = 'hello *';
// 匹配*
console.log(str.match(/\*/)); // ["*"]
字符类
字符类用来匹配一组字符中的任意一个字符。常见的字符类有:
[abc]
匹配a、b或c中的任意一个字符。[^abc]
匹配不在a、b或c中的任意一个字符。[a-z]
匹配a到z中的任意一个字符。[^a-z]
匹配不在a到z中的任意一个字符。[0-9]
匹配数字0到9中的任意一个字符。[^0-9]
匹配不是数字0到9中的任意一个字符。
示例代码:
const str = 'hello world,';
// 匹配所有小写字母
console.log(str.match(/[a-z]/g)); // ["h", "e", "l", "l", "o", "w", "o", "r", "l", "d"]
// 匹配所有非小写字母
console.log(str.match(/[^a-z]/g)); // [" ", " ", ","]
分组构造
分组构造可以理解为是将多个字符作为一个整体进行匹配。常见的分组构造有:
()
将括号内的多个字符作为一个整体进行匹配。|
表示匹配|
左边或右边的字符。
示例代码:
const str = 'hello world, hello regex.';
// 匹配hello或hi
console.log(str.match(/hello|hi/)); // ["hello"]
// 匹配hello world或hello regex
console.log(str.match(/hello (world|regex)/)); // ["hello world", "world"]
结论
以上就是正则表达式的基本知识点,它在前端开发中的应用非常广泛,例如表单校验、输入框自动提示、字符串去重等。掌握好正则表达式,能够大大提高工作效率和代码质量。