正则表达式应用场景

这篇具有很好参考价值的文章主要介绍了正则表达式应用场景。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据验证

数据验证应该是正则表达式最常见的场景了,经常用于用户的输入是否符合所需的条件。数据验证可确保输入或导入的数据准确、一致,并符合预定义的规则。

验证手机号:

const phoneNumber = "13712345678";
const regex = /^1[3-9]\d{9}$/;
console.log("手机号格式正确:", regex.test(phoneNumber));

验证邮箱:

const email = "example@example.com";
const regex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
console.log("电子邮件格式正确:", regex.test(email));

验证密码(要求:至少包含一个数字,一个字母,一个特殊字符,长度在8~18之间):

const password = "Abcdef.123";
const regex = /^(?=.*\d)(?=.*[a-zA-Z])(?=.*[\W_]).{8,18}$/;
console.log("密码格式正确:", regex.test(password))

验证输入内容不能包含 emoji 表情:

function hasEmoji(str) {
  const emojiRegex = /[\uD800-\uDFFF]|[\u2600-\u27FF]|[\u1F000-\u1F9FF]/g;
  return emojiRegex.test(str);
}

// 测试样例
const text1 = 'Hello, world!';
const text2 = '你好,🌍!';
console.log(hasEmoji(text1)); // false
console.log(hasEmoji(text2)); // true

搜索和替换

搜索和替换是正则表达式的很常见的用例。它允许查找文本中的特定模式并将其替换为所需的内容。

笔者之前做个一个需求:

  1. 获取 HTML 字符串中所有图片,也就是获取所有 img 标签的 src 属性值,这个需求属于数据提取,第三部分会讲到;
  2. 将获取到的图片转灰度图,转灰度成功的图片的名称会加一个-gray后缀,将这个图片替换 HTML 原来的图片。也就将转换成功的图片的src地址加-gray后缀。

灰度图替换:

const grayImgReplace = (html: string, imgUrl: string) => {
    const regex = /(https?:\/\/[^\s"']+\.[^\s"']+(?<!-gray))\.(jpg|jpeg|png)/;
    const match = regex.exec(html);
    if (match) {
        return html.replace(match[0], `${imgUrl}`);
    }
    return html;
};

注意:这里仅替换一张图,若需要替换多张,每个图片都执行该方法即可。

另一个例子就是在 IDE 中进行正则表达式搜索和替换操作。比如,在 VS Code 中,只需在搜索栏中点击搜索栏左侧的正则表达式按钮(.*)或按下快捷键 Alt + R,就可以激活正则表达式搜索模式。

比如,有一个动态接口路径:/app/api/:modal/list,想要看看哪些地方调用了这个接口。这个路径中间的 modal 是动态的,没办法直接通过字符串进行搜索,怎么办呢?可以借助正则表达式轻松实现:

\/app\/api\/([^\/]+)\/list

不管 modal 是什么,都可以轻松搜索到:

除此之外,还可以通过搜索替换轻松实现数据的格式化。例如,将数字转换为货币格式:

const formatMoney = (money) => {
  return money.replace(new RegExp(`(?!^)(?=(\\d{3})+${money.includes('.') ? '\\.' : '$'})`, 'g'), ',') 
}
formatMoney('123456789') // '123,456,789'
formatMoney('123456789.123') // '123,456,789.123'
formatMoney('123') // '123'

数据提取

数据提取是正则表达式的另一个常见用例。正则表达式使我们能够根据定义的模式从较大的文本中有效地提取特定信息。

上面提到了从 HTML 字符串中获取所有图片 URL 的需求,下面来实现一下:

const getImgs = (domContent) => {
  const imgs = [];
  const imgPattern = /<img[^>]+src=['"]((?!.*\.svg).+?)['"]/g;
  let match = null;
  while ((match = imgPattern.exec(domContent)) !== null) {
    imgs.push(match[1]);
  }
  return imgs;
};

再比如,获取所有 a 标签链接,也就是获取 href 属性值:

const html = '<a href="https://www.example.com">Link 1</a> <a href="https://www.google.com">Link 2</a>';

// 使用正则表达式提取 <a> 标签链接
const linkRegex = /<a\s+(?:[^>]*?\s+)?href=(["'])(.*?)\1/g;
const links = [];
let match;

while ((match = linkRegex.exec(html)) !== null) {
  const link = match[2];
  links.push(link);
}

console.log(links);

输出结果如下:

[
  'https://www.example.com',
  'https://www.google.com'
]

再比如,提取 URL 中的域名:

const url = 'https://www.example.com/path/to/page?param1=value1&param2=value2#section';
const domainRegex = /https?:\/\/([\w.-]+)/;
const match = url.match(domainRegex);
const domain = match && match[1];

console.log(domain); // www.example.com

数据清洗

通过适当使用正则表达式,可以轻松地从文本数据中查找、匹配和替换特定的模式和字符,从而对数据进行清理和预处理。以下是一些常见的数据清洗任务,可以使用正则表达式来完成:

  • 移除多余空格:使用正则表达式将连续的多个空格或制表符替换为单个空格,或者完全移除所有空格。
  • 格式化日期:使用正则表达式解析和提取日期字符串,并将其格式化为指定的格式或日期对象。
  • 清除特殊字符:使用正则表达式从文本数据中移除不需要的特殊字符和标点符号,例如 emoji 表情符号、HTML 标签、URL 等。
  • 提取信息:使用正则表达式从文本数据中提取特定的信息,例如电话号码、邮件地址、IP 地址等。
  • 替换错误或不一致的数据:使用正则表达式查找和替换文本数据中的错误拼写、大小写、颠倒顺序等问题,使得数据更加一致和规范化。

比如,删除字符串中的标签和 emoji 表情:

const text = 'Hello, <b>world</b>! 🌍';
const cleanText = text.replace(/<\/?[^>]+(>|$)/g, '').replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g, '');
console.log(cleanText); // Hello, world!

这里使用了两个正则表达式替换操作:文章来源地址https://www.toymoban.com/news/detail-710502.html

  • /<\/?[^>]+(>|$)/g:这个正则表达式用于匹配并移除 HTML 标签。它会匹配尖括号内的任何内容,并将其替换为空字符串。
  • /[\uD800-\uDBFF][\uDC00-\uDFFF]/g:这个正则表达式用于匹配并移除 emoji 表情符号。由于 emoji 符号采用 Unicode 编码的多个字符表示,我们使用这个正则表达式匹配并移除这些字符。

到了这里,关于正则表达式应用场景的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 正则表达式在网页处理中的应用四则

    正则表达式在网页处理中的应用四则 正则表达式(Regular Expression)为字符串模式匹配提供了一种高效、方便的方法。几乎所有高级语言都提供了对正则表达式的支持,或者提供了现成的代码库供调用。本文以ASP环境中常见的处理任务为例,介绍正则表达式的应用技巧。 我们

    2024年02月11日
    浏览(52)
  • Java 基础进阶篇(十八):正则表达式匹配规则和应用

      正则表达式是对字符串(包括普通字符(例如:a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正

    2024年02月13日
    浏览(56)
  • 006集 正则表达式 re 应用实例—python基础入门实例

    正则表达式指预先定义好一个 “ 字符串模板 ” ,通过这个 “ 字符串模 板” 可以匹配、查找和替换那些匹配 “ 字符串模板 ” 的字符串。 Python的中 re 模块,主要是用来处理正则表达式,还可以利用 re 模块通过正则表达式来进行网页数据的爬取和存储。 正则表达式的英文

    2024年02月01日
    浏览(59)
  • 【从零学习python 】65. Python正则表达式修饰符及其应用详解

    修饰符 描述 re.I 使匹配对大小写不敏感 re.M 多行匹配,影响 ^ 和 $ re.S 使 . 匹配包括换行在内的所有字符 示例代码如下: 以上是关于正则表达式修饰符的介绍和示例。修饰符可以根据需要来调整正则表达式的匹配方式,从而更加灵活地处理字符串匹配问题。使用合适的修饰

    2024年02月11日
    浏览(53)
  • C#中的Lambda表达式应用方式及场景

    Lambda表达式在C#中提供了一种更简洁、灵活的方式来定义匿名函数,并在多种场景下提供了更好的代码编写体验。通过使用Lambda表达式,您可以减少冗余代码,并以更直观和简洁的方式表达函数的逻辑。 当使用C#中的Lambda表达式时,有多种应用方式和应用场景。 下面我将详细

    2024年02月12日
    浏览(48)
  • 正则表达式在PHP8中的应用案例-PHP8知识详解

    正则表达式在php8中有许多应用案例。以下是一些常见的应用场景:如数据验证、数据提取、数据替换、url路由、文本搜索和过滤等。 1、数据验证 使用正则表达式可以对用户输入的数据进行验证,例如验证邮箱地址、手机号码、密码强度等。 下面是一个用正则表达式验证邮

    2024年02月12日
    浏览(42)
  • 【Go】Go 文本匹配 - 正则表达式基础与编程中的应用 (8000+字)

             本文共计8361字,预计阅读时间18分钟         正则表达式(Regular Expression, 缩写常用regex, regexp表示)是计算机科学中的一个概念,很多高级语言都支持正则表达式。 目录 何为正则表达式 语法规则 普通字符 字符转义 限定符 定位符 分组构造 模式匹配 regexp包

    2024年02月12日
    浏览(42)
  • 正则表达式、grep过滤工具、sed基本用法、sed基本操作指令、sed应用案例

    1.1 问题 本案例要求熟悉正则表达式的编写,完成以下任务: 利用grep或egrep工具练习正则表达式的基本用法 1.2 方案 表-1 基本正则列表 表-2 扩展正则列表 1.3 步骤 实现此案例需要按照如下步骤进行。 步骤一:正则表达式匹配练习 1)基本正则表达式 测试 ^ $ [] [^] 测试 .

    2024年01月24日
    浏览(85)
  • 鸿运应用开发学习-发现了一个TextInput组件中使用正则表达式后出现的BUG

    一、起因 最近我正在学习鸿蒙应用开发,准备把之前在安卓系统上开发的一个小应用,使用ArkTs语言,再写一遍,做成原生鸿蒙应用。我的应用需要对液体的体积数据进行换算,对输入的体积和对应的温度参数根据相关的计算公式进行换算,得到该液体在20℃下的标准体积,

    2024年01月16日
    浏览(60)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包