JavaScript之正则表达式基础知识小结
正则表达式(Regular Expression)是一个用来处理文本的强大工具,具有非常丰富的语法和大量的用途,它可以用来处理文本的搜索、匹配、替换、验证等方面的问题。
正则表达式创建
在 JavaScript 中,正则表达式可以通过两种方式来创建:
1. 通过字面量形式创建
var reg = /ab+c/;
2. 通过 RegExp() 构造函数创建
var reg = new RegExp("ab+c");
元字符
元字符是用来表示特殊含义的字符,下面是一些常用的元字符:
元字符 | 描述 |
---|---|
\ | 转义字符 |
. | 匹配任意字符(除了换行符) |
^ | 匹配字符串开头 |
$ | 匹配字符串结尾 |
* | 匹配前面的表达式零次或多次 |
+ | 匹配前面的表达式一次或多次 |
? | 匹配前面的表达式零次或一次 |
{n} | 匹配前面的表达式 n 次 |
{n,} | 匹配前面的表达式至少 n 次 |
{n,m} | 匹配前面的表达式 n 到 m 次 |
[...] | 匹配字符集中的任意一个字符 |
[^...] | 匹配除了字符集中的任意一个字符外 |
(…) | 分组 |
| | 或 |
限定符
限定符指的是用来限定一个表达式匹配次数的符号,下面是一些常用的限定符:
限定符 | 描述 |
---|---|
* | 匹配前面的表达式零次或多次(0 或 多) |
+ | 匹配前面的表达式一次或多次(1 或 多) |
? | 匹配前面的表达式零次或一次(0 或 1) |
{n} | 匹配前面的表达式 n 次 |
{n,} | 匹配前面的表达式至少 n 次 |
{n,m} | 匹配前面的表达式 n 到 m 次 |
分组与引用
括号可以用来进行分组,在分组中可以使用 | 进行或运算,同时在正则中还可以使用反斜杠加数字表示反向引用,即使用第几个括号中的内容。
下面是一个简单的例子:
var reg = /^(html|css|javascript)+语言$/;
var str1 = "html语言";
var str2 = "JavaScript语言";
var str3 = "C语言";
console.log(reg.test(str1)); // true
console.log(reg.test(str2)); // true
console.log(reg.test(str3)); // false
以上代码中我们使用了分组和或运算来匹配字符串结尾的“语言”两个字,其中的括号就是用来进行分组的。
正则表达式方法
在 JavaScript 中,RegExp 对象提供了一些常用的正则表达式方法:
- test():判断字符串是否符合正则表达式,返回 true/false。
var reg = /\d+/;
console.log(reg.test("123")); // true
console.log(reg.test("abc")); // false
- exec():查找字符串中符合正则表达式的字符,返回一个包含查找结果的数组(如果没有找到则返回 null)。
var reg = /\d+/;
console.log(reg.exec("123 456")); // ["123"]
console.log(reg.exec("abc")); // null
示例一:验证电子邮箱格式
我们可以使用正则表达式来验证字符串的格式是否符合电子邮箱的格式:
var reg = /^(\w-*\.*)+@(\w-?)+(\.\w{2,})+$/;
var email1 = "example@test.com";
var email2 = "example@test.cn";
var email3 = "abc";
console.log(reg.test(email1)); // true
console.log(reg.test(email2)); // true
console.log(reg.test(email3)); // false
以上代码中我们使用了一些元字符和限定符来构建一个匹配电子邮箱的正则表达式。
示例二:使用正则表达式匹配 url 参数
我们可以使用正则表达式来匹配 url 中的参数:
var url = "http://www.example.com?name=husky&age=18";
var reg = /\b(\w+)\b=(\w+)/g;
var result;
while((result = reg.exec(url)) !== null) {
// result[0]是匹配到的全部字符串,result[1]是第一个括号匹配到的字符串,result[2]是第二个括号匹配到的字符串
console.log(result[1] + ": " + result[2]);
}
// 输出:
// name: husky
// age: 18
以上代码中我们使用了 \b(单词边界)和 g(全局匹配)选项来匹配 url 中的参数,使用 exec() 方法找到所有匹配的结果并打印输出。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:javascript之正则表达式基础知识小结 - Python技术站