开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情
前言
RegExp表达式为我们校验带来了极大的方便,为了满足我们日常开发,写出想要的正则表示式我们需要熟悉正则表示式。正则表达式是为了检验字符串,首先我们要清楚常用的字符在正则中如何表示。
字符匹配
我们可以用'[]'包裹字符,表示我们想要匹配对应的字符。
- 数字;如果我们想要匹配数字,就用[0-9]表示即可。
const str = '123adfes'
const reg = new RegExp(/[0-9]/)
console.log(reg.test(str))//true
- 字母;[A-Z]表示大写,[a-z]表示小写。
const str = '123adfes'
const str1 = '123ABC'
const reg = new RegExp(/[a-z]/)
console.log(reg.test(str))//true
console.log(reg.test(str1))//false
如果我们想要大小写可以结合起来写成A-z,但是不能写成a-Z这样是不符合规则的。如果还想将字母跟数字结合起来,再加上一个下划线就有了简洁写法。
- 字母+数字+下划线;\w,反斜杠加w就能表示,它就等于[0-9A-z_]。
- 中文;[\u4e00-\u9fas]表示中文,之所以这么表示,是因为Unicode编码,该范围的Unicode就代表着汉字。
const str = "我是谁"
const str1="abc"
const reg = new RegExp(/[\u4e00-\u9fa5]/)
console.log(reg.test(str))//true
console.log(reg.test(str1))//false
- 指定字符;如果我们想要指定字符,直接在'[]'填入想要的字符即可。
- 去除字符;当我们在字符前面加上^,那么就会匹配除了'[]'里的字符之外的所有字符。比如,我们可以匹配不包含数字的字符串。
const str = 'ab';
const str1 = '12456';
const reg = new RegExp(/[^0-9]/);
console.log(reg.test(str)); //true 没有数字
console.log(reg.test(str1)); //false 有数字
- .点字符;当我们想要匹配除了换行符任意字符。那么我们就可以用'.'字符来表示
const str="123aBc哈哈"
const reg = new RegExp(/./)
console.log(reg.test(str))//true
- 只匹配换行符。如果我们就想只匹配换行符,那么就用"\n"就可以。
次数匹配
上面语法都是匹配字符的,实际开发中我们会有限制字符长度的需求,那么用正则又该怎么表达。
- {n,m};匹配成功的次数符合n-m次,n和m都是正整数并且m>n。因为符合才会返回true所以利用这个语法我们就能做到长度限制。
const str = '1';
const str1 = '12';
const reg = new RegExp(/^[0-9a-zA-Z\u4e00-\u9fa5]{2,4}$/);//2-4个字符
console.log(reg.test(str)); //false
console.log(reg.test(str1)); //true
了解了{n,m},那么我们可以举一反三,掌握其他表示次数的语法:
- {n};成功次数为n次。
const str = 'ab';
const str1 = 'abbbbaba';
const reg = new RegExp(/ab{2}/);
console.log(reg.test(str)); //false ab匹配一次
console.log(reg.test(str1)); //true ab匹配两次符合
- {n,};至少成功n次。
const reg = new RegExp(/ab{1,}/);//至少匹配一次
console.log(reg.test(str)); //true ab匹配一次符合
console.log(reg.test(str1)); //true ab匹配两次符合
除了上述我们还可以用一些符号来表示次数,方便开发:
- '?';表示匹配0次或者1次。
- '*';表示匹配任意次。
- '+';表示匹配个数大于1。
总结
以上就是正则常用的一些语法,也发现一个有意思的事情就是在掘金编辑器中*字符后面字体都是斜体,加上反斜杠就显示正常啦,这就是正则的魅力所在,发现小惊喜。