MST
星途 面试题库

面试题:JavaScript正则表达式复杂模式提取

假设有一个字符串,内容为 'This is a sample text with numbers: 123, 456 and words: apple, banana. Email: test@example.com'。请使用JavaScript正则表达式提取出所有的数字、单词以及邮箱地址。你需要编写完整的正则表达式,并使用 `match` 方法将提取到的内容展示出来。同时,解释一下你每个正则表达式的设计思路。
23.9万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
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);

正则表达式设计思路

  1. 数字正则表达式 /\d+/g
    • \d 匹配任何数字字符(0 - 9)。
    • + 表示前面的字符(即数字字符)出现一次或多次。
    • g 标志表示全局匹配,即找到字符串中所有符合条件的内容,而不是只匹配第一个。这样可以找到字符串中所有的数字。
  2. 单词正则表达式 /\b\w+\b/g
    • \b 是单词边界,它匹配一个位置,这个位置在一个单词字符(\w,即字母、数字或下划线)和一个非单词字符之间,或者在字符串的开头或结尾。
    • \w 匹配任何单词字符(字母、数字或下划线)。
    • + 表示前面的字符(即单词字符)出现一次或多次。
    • g 标志用于全局匹配,这样可以找到字符串中所有的单词。
  3. 邮箱地址正则表达式 /\b[\w.-]+@[\w.-]+\.\w+\b/g
    • \b 单词边界,确保匹配的邮箱地址是独立的,不会是某个单词的一部分。
    • [\w.-]+ 匹配邮箱用户名部分,\w 匹配单词字符,-. 匹配其本身,+ 表示前面的字符集出现一次或多次。
    • @ 匹配邮箱地址中的 @ 符号。
    • [\w.-]+ 匹配邮箱域名部分,同样,\w 匹配单词字符,-. 匹配其本身,+ 表示前面的字符集出现一次或多次。
    • \. 匹配实际的点号(因为点号在正则表达式中有特殊含义,所以需要转义)。
    • \w+ 匹配顶级域名部分,\w 匹配单词字符,+ 表示前面的字符出现一次或多次。
    • g 标志用于全局匹配,这样可以找到字符串中所有的邮箱地址。