下面是对“JavaScript中正则表达式语法详解”的完整攻略。
JavaScript中正则表达式语法详解
什么是正则表达式
正则表达式是一种用于匹配字符串中模式的表达式。使用正则表达式可以进行字符串搜索、替换、提取等操作。在JavaScript中,可以通过RegExp对象表示正则表达式。
创建正则表达式
可以通过两种方式创建正则表达式:使用字面量、使用RegExp构造函数。
使用字面量
字面量的形式可以直接将正则表达式写在两个前斜杠之间(/.../)。例如下面创建了一个正则表达式,用于匹配所有的单词:
const regExp = /\w+/;
其中:
- \w表示匹配任意一个字母、数字或下划线
- +表示匹配前面的字符一次或者多次
使用RegExp构造函数
RegExp构造函数可以传入一个正则表达式的字符串,也可以传入两个字符串。例如下面创建了一个正则表达式,用于匹配所有的单词:
const regExp = new RegExp('\\w+');
其中:
- \w表示匹配任意一个字母、数字或下划线
- +表示匹配前面的字符一次或者多次
- 注意需要在字符串中对\进行转义
正则表达式的标志
正则表达式可包含零个或多个标志,这些标志可以更改表达式的行为。
共有6个正则表达式标志:
标志 | 描述 |
---|---|
i | 执行对大小写不敏感的匹配。 |
g | 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 |
m | 执行多行匹配。 |
如果要添加标志,在两个前斜杠之后添加。例如下面的正则表达式使用了i
标志:
const regExp = /hello/i;
正则表达式的方法
RegExp对象提供了多个方法,用于对字符串进行匹配和处理。
test()
test()方法用于检测一个字符串是否匹配某个正则表达式,返回值为布尔值。例如下面的正则表达式用于匹配是否包含任意一个单词:
const regExp = /\w+/;
const str = 'hello world';
console.log(regExp.test(str)); // true
exec()
exec()方法用于检索字符串中指定正则表达式的匹配。如果找到了匹配的文本,则返回一个结果数组,否则返回null。例如下面的正则表达式用于匹配所有的单词,并返回第一个单词:
const regExp = /\w+/;
const str = 'hello world';
console.log(regExp.exec(str)); // ['hello', index: 0, input: 'hello world', groups: undefined]
数组的第一个元素是匹配到的字符串,之后的属性index表示匹配到字符串的下标,input表示输入的字符串。
示例
下面是两个使用JavaScript正则表达式的示例:
验证手机号码
const regExp = /^1[3-9]\d{9}$/;
const phoneNumber = '13912345678';
const isValidPhoneNumber = regExp.test(phoneNumber);
console.log(isValidPhoneNumber); // true
正则表达式/^1[3-9]\d{9}$/
用于匹配11位手机号码,其中:
- ^
表示匹配字符串的开始位置
- 1
表示数字1
- [3-9]
表示匹配数字3-9的任意一个
- \d{9}
表示匹配任意9个数字
- $
表示匹配字符串的结束位置
提取URL中的参数
const regExp = /(\w+)=([\w\u4e00-\u9fa5-]+)/g;
const url = 'http://www.example.com/?name=张三&age=18';
let match = regExp.exec(url);
const params = {};
while (match != null) {
const key = match[1];
const value = match[2];
params[key] = value;
match = regExp.exec(url);
}
console.log(params); // {name: '张三', age: '18'}
正则表达式/(\w+)=([\w\u4e00-\u9fa5-]+)/g
用于匹配URL中的参数,其中:
- (\w+)
表示匹配参数名,其中\w
表示匹配任意一个字母、数字或下划线,+
表示匹配前面的字符一次或者多次
- =
表示等号
- ([\w\u4e00-\u9fa5-]+)
表示匹配参数值,其中\w
表示匹配任意一个字母、数字或下划线,\u4e00-\u9fa5
表示匹配中文字符,-
表示匹配中划线,+
表示匹配前面的字符一次或者多次
- g
表示全局匹配
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript中正则表达式语法详解 - Python技术站