返回

掌握七大面试必考的正则表达式,从此横扫面试官

前端

1. 数字千分位分割

题目: 实现一个函数,将给定的数字以千位为单位进行分割,并在每三位数字之间添加一个逗号。

示例:

输入:123456789
输出:123,456,789

解答:

可以使用正则表达式中的\B(非单词边界)来匹配数字之间的边界,然后使用replace()方法替换这些边界为逗号。

import re

def thousand_separator(num):
  """
  将数字以千位为单位进行分割,并在每三位数字之间添加一个逗号。

  Args:
    num: 要分割的数字。

  Returns:
    分割后的数字字符串。
  """

  # 使用正则表达式匹配数字之间的边界
  pattern = r'\B(?=(\d{3})+(?!\d))'

  # 使用replace()方法替换边界为逗号
  return re.sub(pattern, ',', str(num))

# 测试函数
print(thousand_separator(123456789))

2. 手机号格式化

题目: 实现一个函数,将给定的手机号格式化为以下格式:086-139-8888-9999。

示例:

输入:13988889999
输出:086-139-8888-9999

解答:

可以使用正则表达式中的\d{3}来匹配手机号的前三位数字,\d{4}来匹配手机号的中间四位数字,\d{4}来匹配手机号的后四位数字,然后使用replace()方法将这些数字替换为相应的格式。

import re

def phone_number_format(number):
  """
  将手机号格式化为以下格式:086-139-8888-9999。

  Args:
    number: 要格式化的手机号。

  Returns:
    格式化后的手机号字符串。
  """

  # 使用正则表达式匹配手机号的前三位数字
  pattern1 = r'(\d{3})'

  # 使用正则表达式匹配手机号的中间四位数字
  pattern2 = r'(\d{4})'

  # 使用正则表达式匹配手机号的后四位数字
  pattern3 = r'(\d{4})'

  # 使用replace()方法替换数字为相应的格式
  return re.sub(pattern1, r'086-\1', re.sub(pattern2, r'-\2', re.sub(pattern3, r'-\3', number)))

# 测试函数
print(phone_number_format('13988889999'))

3. 实现一个字符串trim函数

题目: 实现一个字符串trim函数,删除字符串首尾的空格。

示例:

输入:'  Hello, world!  '
输出:'Hello, world!'

解答:

可以使用正则表达式中的^\s+和\s+$来匹配字符串首尾的空格,然后使用replace()方法替换这些空格为空字符串。

import re

def string_trim(string):
  """
  删除字符串首尾的空格。

  Args:
    string: 要处理的字符串。

  Returns:
    去除空格后的字符串。
  """

  # 使用正则表达式匹配字符串首尾的空格
  pattern = r'^\s+|\s+
import re

def string_trim(string):
  """
  删除字符串首尾的空格。

  Args:
    string: 要处理的字符串。

  Returns:
    去除空格后的字符串。
  """

  # 使用正则表达式匹配字符串首尾的空格
  pattern = r'^\s+|\s+$'

  # 使用replace()方法替换空格为空字符串
  return re.sub(pattern, '', string)

# 测试函数
print(string_trim('  Hello, world!  '))
#x27;
# 使用replace()方法替换空格为空字符串 return re.sub(pattern, '', string) # 测试函数 print(string_trim(' Hello, world! '))

4. 匹配一个以字母开头,后面是数字和字母的混合字符串

题目: 实现一个正则表达式,匹配一个以字母开头,后面是数字和字母的混合字符串。

示例:

输入:'a1b2c3'
输出:True
输入:'1a2b3c'
输出:False

解答:

可以使用正则表达式中的^[a-zA-Z][a-zA-Z0-9]*$来匹配一个以字母开头,后面是数字和字母的混合字符串。

import re

def match_string(string):
  """
  匹配一个以字母开头,后面是数字和字母的混合字符串。

  Args:
    string: 要匹配的字符串。

  Returns:
    匹配结果(True/False)。
  """

  # 使用正则表达式匹配字符串
  pattern = r'^[a-zA-Z][a-zA-Z0-9]*
import re

def match_string(string):
  """
  匹配一个以字母开头,后面是数字和字母的混合字符串。

  Args:
    string: 要匹配的字符串。

  Returns:
    匹配结果(True/False)。
  """

  # 使用正则表达式匹配字符串
  pattern = r'^[a-zA-Z][a-zA-Z0-9]*$'

  # 使用match()方法进行匹配
  return re.match(pattern, string)

# 测试函数
print(match_string('a1b2c3'))
print(match_string('1a2b3c'))
#x27;
# 使用match()方法进行匹配 return re.match(pattern, string) # 测试函数 print(match_string('a1b2c3')) print(match_string('1a2b3c'))

5. 匹配一个包含数字和字母的字符串,且数字和字母必须交替出现

题目: 实现一个正则表达式,匹配一个包含数字和字母的字符串,且数字和字母必须交替出现。

示例:

输入:'a1b2c3'
输出:True
输入:'1a2b3c'
输出:False
输入:'a1a2b3'
输出:False

解答:

可以使用正则表达式中的^([a-zA-Z0-9])([a-zA-Z0-9])*$来匹配一个包含数字和字母的字符串,且数字和字母必须交替出现。

import re

def match_string(string):
  """
  匹配一个包含数字和字母的字符串,且数字和字母必须交替出现。

  Args:
    string: 要匹配的字符串。

  Returns:
    匹配结果(True/False)。
  """

  # 使用正则表达式匹配字符串
  pattern = r'^([a-zA-Z0-9])([a-zA-Z0-9])*
import re

def match_string(string):
  """
  匹配一个包含数字和字母的字符串,且数字和字母必须交替出现。

  Args:
    string: 要匹配的字符串。

  Returns:
    匹配结果(True/False)。
  """

  # 使用正则表达式匹配字符串
  pattern = r'^([a-zA-Z0-9])([a-zA-Z0-9])*$'

  # 使用match()方法进行匹配
  return re.match(pattern, string)

# 测试函数
print(match_string('a1b2c3'))
print(match_string('1a2b3c'))
print(match_string('a1a2b3'))
#x27;
# 使用match()方法进行匹配 return re.match(pattern, string) # 测试函数 print(match_string('a1b2c3')) print(match_string('1a2b3c')) print(match_string('a1a2b3'))

6. 匹配一个合法的IP地址

题目: 实现一个正则表达式,匹配一个合法的IP地址。

示例:

输入:'192.168.1.1'
输出:True
输入:'192.168.1.256'
输出:False
输入:'192.168.1.a'
输出:False

解答:

可以使用正则表达式中的^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$来匹配一个合法的IP地址。

import re

def match_ip_address(ip_address):
  """
  匹配一个合法的IP地址。

  Args:
    ip_address: 要匹配的IP地址。

  Returns:
    匹配结果(True/False)。
  """

  # 使用正则表达式匹配IP地址
  pattern = r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
import re

def match_ip_address(ip_address):
  """
  匹配一个合法的IP地址。

  Args:
    ip_address: 要匹配的IP地址。

  Returns:
    匹配结果(True/False)。
  """

  # 使用正则表达式匹配IP地址
  pattern = r'^((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$'

  # 使用match()方法进行匹配
  return re.match(pattern, ip_address)

# 测试函数
print(match_ip_address('192.168.1.1'))
print(match_ip_address('192.168.1.256'))
print(match_ip_address('192.168.1.a'))
#x27;
# 使用match()方法进行匹配 return re.match(pattern, ip_address) # 测试函数 print(match_ip_address('192.168.1.1')) print(match_ip_address('192.168.1.256')) print(match_ip_address('192.168.1.a'))

7. 匹配一个有效的电子邮箱地址

题目: 实现一个正则