JavaScript(简称JS)中的正则表达式是一种强大的文本处理工具,它允许你执行模式匹配和操作。以下是一些基本的正则表达式概念和用法:
-
创建正则表达式:
- 字面量方式:
let regex = /pattern/flags;
- 构造函数方式:
let regex = new RegExp("pattern", "flags");
- 字面量方式:
-
正则表达式修饰符(Flags):
g
:全局搜索,不停止在第一个匹配项。i
:不区分大小写的搜索。m
:多行搜索,^
和$
匹配每一行的开始和结束。y
:"粘性"搜索,^
和$
匹配从上次匹配位置之后的字符。
-
特殊字符:
.
:匹配任意单个字符,除了换行符。*
:匹配前面的子表达式零次或多次。+
:匹配前面的子表达式一次或多次。?
:匹配前面的子表达式零次或一次。|
:逻辑或操作符,匹配两个表达式中的任意一个。()
:捕获组,用于创建一个或多个表达式的组合,并捕获匹配的文本。
-
字符类:
[abc]
:匹配方括号内的任意一个字符。[a-z]
:匹配任何小写字母。[^abc]
:匹配除了方括号内的任意一个字符。
-
预定义字符集:
\d
:匹配任何数字,等同于[0-9]
。\w
:匹配任何字母数字字符,包括下划线。\s
:匹配任何空白字符,包括空格、制表符、换行符等。
-
量词:
{n}
:匹配确定的n次。{n,}
:至少匹配n次。{n,m}
:最少匹配n次且最多m次。
-
断言:
^
:匹配输入字符串的开始位置。$
:匹配输入字符串的结束位置。\b
:匹配一个单词边界。\B
:匹配非单词边界。
-
贪婪与懒惰模式:
- 默认情况下,量词是贪婪的,尽可能多地匹配字符。在量词后面加上
?
可以使它变成懒惰的,尽可能少地匹配字符。
- 默认情况下,量词是贪婪的,尽可能多地匹配字符。在量词后面加上
-
正则表达式方法:
String.match()
:检索匹配正则表达式的子串。String.replace()
:替换与正则表达式匹配的子串。String.search()
:检索字符串中第一个匹配正则表达式的位置。String.split()
:使用正则表达式来分割字符串。
-
示例:
let regex = /hello/; let str = "hello world"; let result = str.match(regex); // ["hello"] let numRegex = /\d+/; let numStr = "123 abc 456"; let nums = numStr.match(numRegex); // ["123", "456"] let lazyRegex = /a*?/; let lazyStr = "aaaab"; let lazyMatch = lazyStr.match(lazyRegex); // ["a"]
正则表达式是JavaScript中处理字符串的强大工具,但它们也可能相当复杂。在使用时,需要仔细考虑正则表达式的构造,以确保它们的行为符合预期。