正则表达式的一些基础认知以及使用

241 阅读2分钟

正则表达式

正则表达式适用于匹配字符串中字符组合得模式,在js中正则也是对象,一般用来验证表单内容是否符合规范,还常用于过滤替换敏感词,或从字符串中提取特定部分

如何创建

1:let reg=new RegExp(/123/)
2:let reg=/123/

测试正则表达式是否规范

reg.test(要检测得文本),例如reg=/123/reg.test(123)表示true,这个正则表示必须要是包含123

正则表达式的组成

边界符

^ 表示匹配行首的文本(以谁开始)

例如reg=/^abc/表示必须abc开头

$ 表示匹配行尾的文本(以谁结束)

精确匹配

如果^和$在一起表示精准匹配

例如reg=/^abc$/表示必须abc这三个字符串

字符类

[]表示有一系列字符可供选择,只要匹配其中一个就可以了

例如reg=/[abc]/这表示只要包含其中任何一个就可以了

reg=/^[abc]$/这表示三选一只能是其中一个

使用 - 表示范围例如reg=/[a-z]/这表示26个英文字母中任意一个返回true

字符组合

我们可以在中括号[]里面写字符组合来进行匹配

例如:reg=/^[a-zA-Z0-9_-]$/这就表示大小写26字母和0-9下划线短横线匹配任意一个就为真

取反符在中括号里面最前面写上^表示取反,不要和边界符^搞乱

量词符

用来设定某个模式出现的次数

*相当于大于等于0,可以出现0或很多次,例如reg=/^a*$/
+相对于大于等于1,可以出现1和很多次,例如reg=/^a+$/
? 表示出现1或者0次,例如reg=/^a?$/
{3}表示重复三次,例如reg=/^a{3}$/
{3,}表示包裹3和三次以上
{3,16}表示3到16次 包括3和16
reg=/^[a-zA-Z0-9_-]{6,16}$/表示里面的任意字符可以出现6到16次

括号总结

大括号,量词符,里面表示重复次数

中括号字符集合,匹配括号里的任意字符

小括号表示优先级例如reg=/abc{4}/这表示字符串必须包裹abcccc这个完整的字符串.如果想要包裹abcabc则需要小括号reg=/(abc){2}/

预定义类

1649823040337.png

正则里面的 | 表示或

正则替换replace方法

1649828020209.png

例如

let str='我是牛逼'
str.replace('被替换的','替换的')
str.replace(/牛逼/,'**')这样只能匹配到第一个
可以使用/牛逼/g 后面加个g可以全局匹配加i可以忽略大小写加gi可以同时兼容,多个敏感词可以用|分隔