一些复杂有用的js正则表达式

以下是一些复杂但有用的 JavaScript 正则表达式,它们可以帮助解决不同场景下的文本处理需求:

1. 验证电子邮件地址

const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;

用途:匹配有效的电子邮件地址。此正则支持常见的电子邮件格式,但不适用于所有可能的电子邮件规则。

2. 验证URL

const urlRegex = /^(https?|ftp):\/\/[^\s/$.?#].[^\s]*$/i;

用途:匹配有效的 HTTP、HTTPS 或 FTP 协议的 URL。

3. 匹配IP地址(IPv4)

const ipRegex = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;

用途:匹配有效的 IPv4 地址。

4. 匹配时间(HH:MM:SS)

const timeRegex = /^(0?[0-9]|1[0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/;

用途:匹配有效的时间格式(小时:分钟:秒),例如 14:25:36

5. 验证日期格式(YYYY-MM-DD)

const dateRegex = /^\d{4}-\d{2}-\d{2}$/;

用途:匹配日期格式 YYYY-MM-DD,例如 2024-12-05

6. 匹配合法的信用卡号(Luhn算法验证)

const creditCardRegex = /^(\d{4}[- ]){3}\d{4}|\d{16}$/;

用途:匹配16位的信用卡号,格式为 1234-5678-1234-5678 或无分隔符 1234567812345678

7. 匹配中文字符

const chineseRegex = /[\u4e00-\u9fa5]/g;

用途:匹配字符串中的中文字符。

8. 提取HTML标签中的内容(例如 <title> 标签)

const titleRegex = /<title>(.*?)<\/title>/i;

用途:提取 HTML 文档中 <title> 标签内的内容。

9. 匹配文件路径

const filePathRegex = /^(\/?[\w-]+\/)*[\w-]+\.(jpg|jpeg|png|gif|bmp|tiff)$/;

用途:匹配特定文件类型的路径,支持 .jpg, .jpeg, .png, .gif, .bmp, .tiff 文件。

10. 匹配并提取电话号码(包括国家代码)

const phoneRegex = /^\+?(\d{1,3})?(\d{10})$/;

用途:匹配电话号码,支持带有可选的国家代码。

11. 匹配正整数(不包括零)

const positiveIntegerRegex = /^(?!0(\.0+)?$)(\d+(\.\d+)?|\.\d+)$/;

用途:匹配正整数(不包括零)。

12. 密码强度(至少8个字符,包含大小写字母、数字和特殊字符)

const passwordRegex = /^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;

用途:验证密码强度。要求至少8个字符,包含小写字母、大写字母、数字和特殊字符。

13. 匹配所有数字(包括小数点)

const numberRegex = /^[+-]?(\d+(\.\d+)?|\.\d+)$/;

用途:匹配正数、负数或小数。

14. 匹配HTML中的所有链接(<a href> 标签)

const linksRegex = /<a\s+(?:[^>]*?\s+)?href="([^"]*)"/g;

用途:匹配 HTML 文档中的所有 <a> 标签,并提取其中的 href 属性值。

15. 去除字符串中的多余空格(保留单词之间的空格)

const trimSpacesRegex = /\s+/g;

用途:将多个连续的空格替换为单个空格。

以下是更多复杂且实用的正则表达式:

16. 匹配包含数字、字母和下划线的变量名(如JavaScript变量名)

const variableNameRegex = /^[a-zA-Z_]\w*$/;

用途:验证是否是合法的变量名(不以数字开头)。


17. 匹配多个邮箱地址(用逗号或分号分隔)

const multipleEmailRegex = /^([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})([;,]\s*[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})*$/;

用途:匹配多个以逗号或分号分隔的电子邮件地址。


18. 提取数字(包括整数和小数)

const extractNumberRegex = /-?\d+(\.\d+)?/g;

用途:从字符串中提取所有数字,包括正负整数和小数。


19. 匹配 Markdown 标题

const markdownHeaderRegex = /^(#{1,6})\s+(.*)$/gm;

用途:匹配 Markdown 格式的标题,支持从 #######


20. 匹配HTML注释

const htmlCommentRegex = /<!--([\s\S]*?)-->/g;

用途:匹配 HTML 中的注释内容。


21. 匹配CSS中的颜色代码(十六进制格式)

const hexColorRegex = /#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})\b/;

用途:匹配 CSS 文件或样式中以 # 开头的颜色代码,例如 #FFF#A1B2C3


22. 匹配YouTube视频链接

const youtubeLinkRegex = /^(https?:\/\/)?(www\.)?(youtube\.com\/watch\?v=|youtu\.be\/)([a-zA-Z0-9_-]{11})$/;

用途:匹配 YouTube 视频链接,并提取视频 ID。


23. 提取文件扩展名

const fileExtensionRegex = /\.(\w+)$/;

用途:从文件名中提取扩展名,例如从 example.txt 提取 txt


24. 验证身份证号(中国大陆 18 位格式)

const idCardRegex = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/;

用途:匹配合法的中国身份证号(18 位格式)。


25. 匹配货币金额(支持千位分隔符)

const currencyRegex = /^\$?(([1-9]\d{0,2}(,\d{3})*)|0)?(\.\d{1,2})?$/;

用途:匹配货币格式,如 $1,234.561234.56


26. 匹配HTML中所有图片的src属性

const imgSrcRegex = /<img\s+[^>]*src="([^"]+)"[^>]*>/g;

用途:从 HTML 文档中提取所有图片的 src 链接。


27. 匹配重复单词(如 “the the”)

const duplicateWordRegex = /\b(\w+)\s+\1\b/g;

用途:匹配连续重复的单词,适用于检查文章中的重复错误。


28. 匹配仅包含字母和数字的字符串

const alphanumericRegex = /^[a-zA-Z0-9]+$/;

用途:匹配仅由字母和数字组成的字符串。


29. 提取括号中的内容

const parenthesesContentRegex = /\(([^)]+)\)/g;

用途:提取括号中的内容,例如从 Hello (World) 提取 World


30. 匹配逗号分隔的CSV字段

const csvFieldRegex = /(?:^|,)(?:"([^"]*)"|([^",]*))/g;

用途:解析 CSV 文件中的字段,包括双引号内的值。


31. 匹配特定开头和结尾的字符串

const startEndRegex = /^start.*end$/;

用途:匹配以 start 开头并以 end 结尾的字符串。


32. 匹配Unicode字符(如 emoji)

const unicodeRegex = /[\u{1F600}-\u{1F64F}]/u;

用途:匹配 Unicode 字符,如表情符号。


33. 校验手机号(中国大陆)

const phoneRegexChina = /^1[3-9]\d{9}$/;

用途:验证中国大陆的 11 位手机号码。


34. 删除所有标点符号

const punctuationRegex = /[.,\/#!$%\^&\*;:{}=\-_`~()]/g;

用途:删除字符串中的所有标点符号。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值