下面是关于JS正则表达式基本语法的完整攻略。
JS正则表达式基本语法
正则表达式的定义
正则表达式(Regular Expression)是一种可以用于字符串匹配的规则,它可以帮助我们快速地从字符串中提取需要的信息。
正则表达式语法
在JS中,我们可以使用RegExp对象来创建正则表达式,其基本语法如下:
var regExp = new RegExp(pattern, flags);
其中,pattern是正则表达式的模式,可以是字符串或RegExp对象,flags是一个标志位,用于控制正则表达式的匹配方式,其取值如下:
- i:表示忽略大小写
- g:表示全局匹配
- m:表示多行匹配
举个例子,我们可以用正则表达式搜索一个字符串中所有的数字。其中,模式是\d
,意思是匹配任意一个数字字符:
var str = "123abc456";
var regExp = /\d/g;
var result = str.match(regExp);
console.log(result);
输出结果为[ '1', '2', '3', '4', '5', '6' ]
,表示将所有的数字字符都匹配出来了。
正则表达式常用语法
元字符
元字符是正则表达式中的一些特殊字符,用于匹配字符串中的一些特殊符号以及一些特定的字符。常用的元字符有:
.
:匹配任意一个字符\d
:匹配一个数字字符\D
:匹配一个非数字字符\s
:匹配一个空白字符(空格、制表符等)\S
:匹配一个非空白字符\w
:匹配一个单词字符(字母、数字、下划线)\W
:匹配一个非单词字符
举个例子,在一个字符串中查找所有的数字和下划线,可以使用以下正则表达式:
var str = "hello_123_world";
var regExp = /[\d_]/g;
var result = str.match(regExp);
console.log(result);
输出结果为[ '1', '2', '3', '_' ]
,表示数字和下划线都被匹配出来了。
量词
量词用于匹配一个或多个重复的字符或者子表达式。常用的量词有:
*
:匹配前面的表达式0次或多次+
:匹配前面的表达式1次或多次?
:匹配前面的表达式0次或1次{n}
:匹配前面的表达式恰好出现n次{n,}
:匹配前面的表达式至少出现n次{n,m}
:匹配前面的表达式至少出现n次,最多出现m次
举个例子,在一个字符串中查找所有的字母,可以使用以下正则表达式:
var str = "hello123world";
var regExp = /[a-zA-Z]+/g;
var result = str.match(regExp);
console.log(result);
输出结果为[ 'hello', 'world' ]
,表示所有的字母都被匹配出来了。
示例1
判断一个字符串是否为手机号格式:
function isMobilePhone(str) {
var regExp = /^1[3456789]\d{9}$/;
return regExp.test(str);
}
console.log(isMobilePhone("13512345678")); // true
console.log(isMobilePhone("12345678901")); // false
在上面的例子中,正则表达式/^1[3456789]\d{9}$/
表示:
^
:表示开始位置1
:表示字符串的第一个字符必须为数字1[3456789]
:表示第二个字符是3456789之间的任意一个数字\d{9}
:表示其后紧跟着9个数字字符$
:表示结束位置
因此,正则表达式可以精准地匹配手机号格式。
示例2
使用正则表达式对一个银行卡号进行脱敏处理:
function desensitization(str) {
var regExp = /^(\d{4})(\d*)(\d{4})$/;
return str.replace(regExp, function(match, p1, p2, p3) {
return p1 + p2.replace(/\d/g, "*") + p3;
});
}
console.log(desensitization("6228480402564890018")); // 6228***********0018
在上面的例子中,正则表达式/^(\d{4})(\d*)(\d{4})$/
表示:
^
:表示开始位置(\d{4})
:表示匹配前4个数字字符,并把它们放入第一个捕获组中(\d*)
:表示匹配0个或多个数字字符,并把它们放入第二个捕获组中(\d{4})
:表示匹配后4个数字字符,并把它们放入第三个捕获组中$
:表示结束位置
同时,我们使用了str.replace
方法来替换字符串中的一部分字符,其中,第二个参数使用了一个匿名函数,用于把第二个捕获组中的所有数字字符都替换为星号*
。
总结
正则表达式是JS中非常重要的一部分,它可以帮助我们快速地从字符串中提取数据,并在输入框的校验中起到重要作用。掌握正则表达式的基本语法和常用技巧,可以更好地完成我们的编程任务。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js正则表达式基本语法(精粹) - Python技术站