const str = 'This is a sample text with numbers: 123, 456 and words: apple, banana. Email: test@example.com';
// 提取数字
const numberRegex = /\d+/g;
const numbers = str.match(numberRegex);
// 提取单词
const wordRegex = /\b\w+\b/g;
const words = str.match(wordRegex);
// 提取邮箱地址
const emailRegex = /\b[\w.-]+@[\w.-]+\.\w+\b/g;
const emails = str.match(emailRegex);
console.log('Numbers:', numbers);
console.log('Words:', words);
console.log('Emails:', emails);
正则表达式设计思路
- 数字正则表达式
/\d+/g
:
\d
匹配任何数字字符(0 - 9)。
+
表示前面的字符(即数字字符)出现一次或多次。
g
标志表示全局匹配,即找到字符串中所有符合条件的内容,而不是只匹配第一个。这样可以找到字符串中所有的数字。
- 单词正则表达式
/\b\w+\b/g
:
\b
是单词边界,它匹配一个位置,这个位置在一个单词字符(\w
,即字母、数字或下划线)和一个非单词字符之间,或者在字符串的开头或结尾。
\w
匹配任何单词字符(字母、数字或下划线)。
+
表示前面的字符(即单词字符)出现一次或多次。
g
标志用于全局匹配,这样可以找到字符串中所有的单词。
- 邮箱地址正则表达式
/\b[\w.-]+@[\w.-]+\.\w+\b/g
:
\b
单词边界,确保匹配的邮箱地址是独立的,不会是某个单词的一部分。
[\w.-]+
匹配邮箱用户名部分,\w
匹配单词字符,-
和 .
匹配其本身,+
表示前面的字符集出现一次或多次。
@
匹配邮箱地址中的 @
符号。
[\w.-]+
匹配邮箱域名部分,同样,\w
匹配单词字符,-
和 .
匹配其本身,+
表示前面的字符集出现一次或多次。
\.
匹配实际的点号(因为点号在正则表达式中有特殊含义,所以需要转义)。
\w+
匹配顶级域名部分,\w
匹配单词字符,+
表示前面的字符出现一次或多次。
g
标志用于全局匹配,这样可以找到字符串中所有的邮箱地址。