Javascript 中的正则表达式的使用,点赞加关注持续更新~
正则表达式(Regular Expression)
正则表达式(Regular Expression,通常简写为regex)是一种在计算机科学中常用的语法规则,用于匹配字符串模式。它是由一系列的字符、符号和规则组成,可以用来搜索、替换、拆分等操作字符串。
使用场景:
一般使用在账号、密码、身份证、验证码、电话号码等一些验证中
定义语法:
在JavaScript中,正则表达式被定义为一个对象,可以通过正则表达式的字面量或者使用RegExp构造函数来创建
// 字面量方式创建正则表达式
let regex = /abc/;
// 使用RegExp构造函数创建正则表达式
let regex = new RegExp('abc');
判断是否符合规则的语法:
regObj.test(被检测的字符串)
如果正则表达式与指定的字符串匹配,返回true,否则返回false
// lg
// 要检测的字符串
const str = '人之初,性本善'
// 定义正则表达式检测规则
const reg = /本善/
// 检测方法
console.log(reg.test(str)) // true
regObj.exec(被检测的字符串)
如果有匹配的的字符串返回一个数组,没有返回null
// lg
// 要检测的字符串
const str = '人之初,性本善'
// 定义正则表达式检测规则
const reg = /本善/
// 检测方法
console.log(reg.exec(str)) // 返回一个数组
// ['本善',index:5,input:'人之初,性本善']
元字符
边界符 | |
---|---|
^ | 匹配输入字符串的开始位置 |
$ | 匹配输入字符串的结束位置 |
. | 匹配除了换行符(\n、\r)之外的任何字符 |
| | 匹配该符号前后的任一表达式 |
量词 | |
* | 匹配前面的子表达式零次或多次(>=0) |
+ | 匹配前面的子表达式一次或多次(>=1) |
? | 匹配前面的子表达式零次或一次(0 || 1) |
{n} | n是一个非负整数,匹配确定的n次(n) |
{n,} | n是一个非负整数,重复大于等于n次(>=n) |
{n,m} | n,m是一个非负整数,重复n到m次 [n,m] |
范围 | |
[xyz] | 匹配列表其中一个字符,加-表示范围,如[a-c] 等价[abc] |
[^xyz] | 匹配列表以外的任意一个字符[^a-c ]等价[^abc ] |
修饰符 | |
g | 默认正则是惰性的,可以通过添加修饰符g 来全部匹配 |
i | 忽略大小写 |
字符类 | |
\w | 匹配数字字母和下划线,等价于[A-Za-z0-9_] |
\W | 匹配数字字母和下划线外的其它字符,等价于[^A-Za-z0-9_] |
\s | 匹配任何空白字符,包括空格、制表符(Tab)、换页符(Page Break)等等。它是 \h (匹配任意水平空白字符)和 \v (匹配任意垂直空白字符)的组合 |
下面是一些示例:
- 检查一个字符串是否包含某个特定的词:
let regex = /apple/
let str = "I like to eat apples."
let result = regex.test(str) // 结果为 true
- 使用范围符来匹配特定的字符:
let regex = /[a-z]/ // 匹配任何小写字母
let str = "Hello,world!"
let result = regex.test(str) // 结果为 true,因为 'hello' 包含小写字母
- 使用边界符来匹配特定位置的字符:
let regex = /^a/ // 匹配字符串开头的 'a'
let str = "apple"
let result = regex.test(str) // 结果为 true
- 使用预定义的字符集:
let regex = /[A-Z]/ // 匹配任何大写字母
let str = "Hello,World!"
let result = regex.test(str)
console.log(result) // 结果为 true,因为 'World' 包含大写字母
- 使用量词:
let regex = /a+/ // 匹配一个或多个连续的 'a' 字符
let str = "apple"
let result = regex.test(str);
console.log(result) // 结果为 true
- 使用
|
符来匹配或排除字符:
let regex = /a|b/ // 匹配 'a' 或 'b'
let str = "apple"
let result = regex.test(str)
console.log(result) // 结果为 true,因为 'apple' 包含 'a' 或 'b'