返回

正则表达式面试题精讲

前端

正则表达式面试题大全,助你轻松过关

正则表达式(Regular Expression,简称 RE)是一种强大的文本处理工具,在处理各种文本匹配、替换、搜索等任务时发挥着重要作用。在面试中,正则表达式题目经常出现,因此做好充分准备至关重要。

一、什么是正则表达式

正则表达式是一种模式,用于文本的特定模式或结构。它提供了一种简洁高效的方式来查找、替换和匹配文本。正则表达式由特殊字符和元字符组成,每个字符代表特定的含义。

二、常见正则表达式面试题

1. 转换字符串格式

题目: 将给定的连字符串转换为驼峰命名法形式的字符串,例如将 "get-element-by-id" 转换为 "getElementById"。

解答:

function getCamelCase(str) {
  return str.replace(/-[a-z]/g, function(match) {
    return match[1].toUpperCase();
  });
}

console.log(getCamelCase("get-element-by-id")); // getElementById

2. 判断字符串是否包含数字

题目: 编写一个正则表达式来判断一个字符串是否包含数字。

解答:

function hasNumber(str) {
  return /\d/.test(str);
}

console.log(hasNumber('abc')); // false
console.log(hasNumber('abc123')); // true

3. 判断电话号码

题目: 编写一个正则表达式来判断一个字符串是否是有效的电话号码,格式为 "xxx-xxx-xxxx"。

解答:

function isPhoneNumber(str) {
  return /^\d{3}-\d{3}-\d{4}$/.test(str);
}

console.log(isPhoneNumber('123-456-7890')); // true
console.log(isPhoneNumber('1234567890')); // false

4. 查找字符串中的所有URL

题目: 编写一个正则表达式来查找一个字符串中的所有URL。

解答:

function findUrls(str) {
  return str.match(/(?:https?:\/\/)?[\w\d\-_]+(\.[\w\d\-_]+)+[\w\d\-_~:\/\?#\[\]@!\
function findUrls(str) {
  return str.match(/(?:https?:\/\/)?[\w\d\-_]+(\.[\w\d\-_]+)+[\w\d\-_~:\/\?#\[\]@!\$&'\(\)\*\+,;=.]+/gi);
}

console.log(findUrls('This is a link: http://www.example.com. This is another link: https://www.example.com/page/1'));
// [
//   'http://www.example.com',
//   'https://www.example.com/page/1'
// ]
amp;'\(\)\*\+,;=.]+/gi
); } console.log(findUrls('This is a link: http://www.example.com. This is another link: https://www.example.com/page/1')); // [ // 'http://www.example.com', // 'https://www.example.com/page/1' // ]

5. 替换字符串中的所有空格

题目: 编写一个正则表达式来替换一个字符串中的所有空格。

解答:

function replaceSpaces(str) {
  return str.replace(/\s/g, '');
}

console.log(replaceSpaces('This is a string with spaces')); // "Thisisastringwithspaces"

6. 删除字符串中的所有标点符号

题目: 编写一个正则表达式来删除一个字符串中的所有标点符号。

解答:

function removePunctuation(str) {
  return str.replace(/[^\w\s]/g, '');
}

console.log(removePunctuation('This is a string with punctuation!')); // "This is a string with punctuation"

7. 将字符串中的所有数字转换为小写

题目: 编写一个正则表达式将字符串中的所有数字转换为小写。

解答:

function lowercaseNumbers(str) {
  return str.replace(/\d/g, function(match) {
    return match.toLowerCase();
  });
}

console.log(lowercaseNumbers('123ABC456')); // "123abc456"

8. 将字符串中的所有字母转换为大写

题目: 编写一个正则表达式将字符串中的所有字母转换为大写。

解答:

function uppercaseLetters(str) {
  return str.replace(/[a-z]/g, function(match) {
    return match.toUpperCase();
  });
}

console.log(uppercaseLetters('abc123DEF')); // "ABC123DEF"

9. 将字符串中的所有单词的首字母转换为大写

题目: 编写一个正则表达式将字符串中的所有单词的首字母转换为大写。

解答:

function capitalizeWords(str) {
  return str.replace(/\b[a-z]/g, function(match) {
    return match.toUpperCase();
  });
}

console.log(capitalizeWords('hello world')); // "Hello World"

10. 将字符串中的所有重复的单词删除

题目: 编写一个正则表达式将字符串中的所有重复的单词删除。

解答:

function removeDuplicateWords(str) {
  return str.replace(/\b(\w+)\b(?=\s+\1\b)/g, '');
}

console.log(removeDuplicateWords('the the cat cat is is sleeping sleeping')); // "the cat is sleeping"

三、常见问题解答

1. 正则表达式有什么优点?

正则表达式具有强大的模式匹配功能,可以高效且准确地处理文本。它们简洁易懂,并且可以轻松地与各种编程语言集成。

2. 正则表达式有什么缺点?

正则表达式有时可能很复杂,特别是对于初学者来说。它们可能难以编写和调试,并且可能会产生意外结果。

3. 学习正则表达式需要多长时间?

学习正则表达式的基本语法和概念相对简单。然而,熟练掌握需要时间和实践。

4. 正则表达式在哪些领域有应用?

正则表达式广泛应用于文本处理、数据验证、数据挖掘、Web 抓取和网络安全等领域。

5. 有哪些资源可以学习正则表达式?

网上有大量的资源可以学习正则表达式,包括教程、文档和在线课程。此外,许多编程语言还提供了正则表达式库和工具。

结论

正则表达式是一种重要的文本处理工具,在各种应用中发挥着至关重要的作用。通过练习和了解常见正则表达式题目,求职者可以提高他们在面试中的表现。掌握正则表达式的技能可以极大地增强求职者的竞争力。