正则表达式、常用的正则

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

正则表达式字符含意义

正则表达式(Regular Expression,简称为Regex或RegExp)是用于匹配和搜索文本模式的工具。它是一个强大且灵活的字符串处理工具,可以用来检查一个字符串是否符合特定的模式,或者从一个文本中提取满足条件的部分。

在正则表达式中,可以使用不同的元字符和特殊符号来定义模式。以下是一些常见的正则表达式元字符和它们的含义:

  1. .:匹配任意字符,除了换行符。

  2. *:匹配前面的元素零次或多次。

  3. +:匹配前面的元素一次或多次。

  4. ?:匹配前面的元素零次或一次。

  5. ^:匹配字符串的开始位置。

  6. $:匹配字符串的结束位置。

  7. []:定义字符集,匹配括号内的任意一个字符。

  8. |:表示逻辑“或”,匹配两个或多个表达式之一。

  9. ():分组,将表达式组合为一个子表达式,可以使用 | 和量词对整个组进行操作。
    用法
    当谈到正则表达式时,还有一些其他重要的概念和用法需要了解:

  10. 字符类和量词: 在正则表达式中,使用方括号 [] 来定义字符类,它可以匹配方括号内的任意一个字符。例如,[aeiou] 匹配任何一个元音字母。使用花括号 {} 可以指定匹配的次数,例如,a{2,4} 匹配连续两到四个字母 a

  11. 预定义字符类: 正则表达式提供了一些预定义的字符类,例如,\d 匹配任意一个数字,\w 匹配任意一个字母或数字,\s 匹配任意一个空白字符。

  12. 转义字符: 反斜杠 \ 是正则表达式的转义字符,用于转义特殊字符,使其失去特殊含义。例如,\. 可以匹配真正的句点而不是匹配任意字符。

  13. 贪婪匹配和非贪婪匹配: 正则表达式默认是贪婪匹配,即尽可能多地匹配字符。非贪婪匹配在量词后加上问号 ?,使其尽可能少地匹配字符。例如,.* 是贪婪匹配,而 .*? 是非贪婪匹配。

  14. 边界匹配: 正则表达式可以用 ^ 表示字符串的开始,用 $ 表示字符串的结束。这样可以确保模式匹配必须出现在字符串的开始或结束位置。

  15. 替换和捕获: 正则表达式可以用于替换文本中的匹配项,也可以使用括号 () 进行捕获,并在替换中引用捕获的内容。

  16. 修饰符: 正则表达式通常支持一些修饰符来修改其行为。例如,i 表示不区分大小写,g 表示全局匹配,m 表示多行匹配等。

不过,不同的编程语言和工具对正则表达式的支持可能有所不同,因此在具体应用中需要查阅相应的文档和规范。

RegExp函数

const regex = new RegExp("pattern",gi);

RegExp属性

在 JavaScript 中,正则表达式的构造函数 RegExp 具有以下属性:

  1. source(只读): 返回正则表达式的模式字符串,即正则表达式的文本模式部分。

  2. global(只读): 返回一个布尔值,表示是否开启全局匹配模式。如果为 true,则正则表达式会匹配所有符合模式的文本,而不是在找到第一个匹配后停止。

  3. ignoreCase(只读): 返回一个布尔值,表示是否开启忽略大小写模式。如果为 true,则正则表达式在匹配时会忽略大小写。

  4. multiline(只读): 返回一个布尔值,表示是否开启多行匹配模式。如果为 true,则正则表达式中的 ^$ 会匹配字符串中每一行的开始和结束位置。

  5. sticky(只读): 返回一个布尔值,表示是否开启粘连匹配模式。如果为 true,则正则表达式将会从目标字符串的当前 lastIndex 位置开始匹配。

  6. unicode(只读): 返回一个布尔值,表示是否开启 Unicode 匹配模式。如果为 true,则正则表达式会正确处理 Unicode 字符。

  7. flags(只读): 返回包含正则表达式标志的字符串,标志是用来指定正则表达式的附加选项的,例如 “gi” 表示同时开启全局匹配和忽略大小写模式。

这些属性可以通过正则表达式对象的构造函数 RegExp 的实例来访问。例如:

const regex = new RegExp("pattern", "gi");
console.log(regex.source); // "pattern"
console.log(regex.global); // true
console.log(regex.ignoreCase); // true
console.log(regex.multiline); // false
console.log(regex.sticky); // false
console.log(regex.unicode); // false
console.log(regex.flags); // "gi"

以上代码中的 "pattern" 是一个示例正则表达式的模式字符串,可以根据需要替换成实际的正则表达式模式。

RegExp对象方法

在 JavaScript 中,正则表达式的构造函数 RegExp 以及正则表达式对象都有一些方法可以用于执行不同的操作。以下是常见的正则表达式方法:

  1. test(): 在字符串中测试正则表达式是否匹配。返回一个布尔值,表示是否找到匹配项。
const regex = /pattern/;
const text = "This is a pattern test.";
console.log(regex.test(text)); // true
  1. exec(): 在字符串中执行正则表达式搜索,返回匹配结果的数组或 null。该方法返回一个数组,包含匹配到的文本以及捕获组的信息。
const regex = /pattern/g;
const text = "This is a pattern test.";
let match = regex.exec(text);
while (match !== null) {
  console.log(match[0]); // 输出匹配到的文本
  match = regex.exec(text); // 继续搜索下一个匹配项
}
  1. match(): 在字符串中搜索匹配项,返回匹配结果的数组或 null。如果正则表达式带有全局标志 g,则返回所有匹配项的数组。否则,只返回第一个匹配项的数组。
const regex = /pattern/g;
const text = "This is a pattern test.";
const matches = text.match(regex);
console.log(matches); // ["pattern"]
  1. search(): 在字符串中查找匹配项,返回第一个匹配项的索引。如果找不到匹配项,则返回 -1。
const regex = /pattern/;
const text = "This is a pattern test.";
console.log(text.search(regex)); // 10
  1. replace(): 在字符串中使用替换文本替换匹配项。
const regex = /pattern/g;
const text = "This is a pattern test.";
const replacedText = text.replace(regex, "replacement");
console.log(replacedText); // "This is a replacement test."

RegExp`构造函数的第二个参数

除了 "gi"(全局匹配和忽略大小写)之外,RegExp 构造函数的第二个参数还可以包含其他标志,用于指定正则表达式的附加选项。以下是常见的标志:

  1. g(全局匹配): 查找所有匹配项,而不是在找到第一个匹配项后停止。

  2. i(忽略大小写): 在匹配时忽略目标字符串的大小写。

  3. m(多行匹配): 开启多行模式。在此模式下,^$ 会匹配字符串中每一行的开始和结束位置,而不仅仅是整个字符串的开始和结束。

  4. s(单行匹配): 开启单行模式。在此模式下,. 可以匹配包括换行符在内的任意字符。

  5. u(Unicode 匹配): 开启 Unicode 模式。在此模式下,将正确处理 Unicode 字符。

  6. y(粘连匹配): 开启粘连匹配模式。正则表达式将从目标字符串的当前 lastIndex 位置开始匹配。

  7. d(具有 dollar 符号的特殊字符): 开启允许使用 $ 符号匹配行尾。

这些标志可以单独使用,也可以组合使用。例如,如果需要开启全局匹配、忽略大小写和多行匹配,可以使用 "gim"

注意:

  • 标志的顺序并不重要,例如 "gi""ig" 都会开启全局匹配和忽略大小写。
  • 如果在构造函数中同时使用了某个标志,在正则表达式字面量中也使用了相同标志,正则表达式字面量中的标志会覆盖构造函数中的标志。例如:new RegExp("pattern", "i")/pattern/i 是等效的,都表示忽略大小写匹配。
  • 不是所有的标志都在所有 JavaScript 引擎中都得到支持。因此,在使用非全局共享的正则表达式时,最好只使用必要的标志。

常用的正则例子

只包含数字(包括正数、负数、零)

const reg = /^-?\d+(\.\d+)?$/;

console.log(reg.test(123)); // true
console.log(reg.test(-123)); // true
console.log(reg.test(-12.3)); // true
console.log(reg.test(0)); // true
console.log(reg.test('0aaaaa')); // false

解释:

  • ^ 表示匹配字符串的开始位置。
  • -? 表示可选的负号,即匹配一个或零个减号。
  • \d+ 表示匹配一个或多个数字。
  • (\.\d+)? 表示可选的小数部分,其中 \. 表示匹配一个点(小数点),\d+ 表示匹配一个或多个数字。
  • $ 表示匹配字符串的结束位置。

注意:

  • 这个正则表达式只匹配纯数字字符串,不包含指数形式(如科学计数法)。
  • 如果要匹配纯整数字符串(不包含小数),可以去掉 (\.\d+)? 部分,即使用 ^-?\d+$
    只包含英文数字及下划线
    要匹配只包含英文字母、数字和下划线的正则表达式,可以使用以下模式:
const reg = /^[A-Za-z0-9_]+$/;
console.log(reg.test(123)); // true
console.log(reg.test(-123)); // false
console.log(reg.test('aaa11')); // true
console.log(reg.test('_a')); // true

解释:

  • ^ 表示匹配字符串的开始位置。
  • [A-Za-z0-9_] 表示一个字符类,匹配任意一个大写字母、小写字母、数字或下划线。
  • + 表示匹配前面的元素一个或多个次数。
  • $ 表示匹配字符串的结束位置。

注意:

  • 这个正则表达式只匹配完全由英文字母、数字和下划线组成的字符串。
  • 如果字符串可以为空(即长度为零),可以将 + 修改为 *,即使用 ^[A-Za-z0-9_]*$。这样可以允许空字符串的匹配。

只包含中英文数字及键盘上的特殊字符

要匹配只包含中文、英文字母、数字以及键盘上的特殊字符的正则表达式,可以使用以下模式:

const reg = /^[\u4E00-\u9FA5A-Za-z0-9`~!@#$%^&*()_\-+=\[\]{}|\\:;"'<>,.?/]+$/;

解释:

  • ^ 表示匹配字符串的开始位置。
  • [\u4E00-\u9FA5] 表示匹配中文字符的范围,它包含了常见的中文字符。
  • A-Za-z 表示匹配任意一个大写字母或小写字母。
  • 0-9 表示匹配任意一个数字。
  • `~!@#$%^&*()_\-+=\[\]{}|\\:;"'<>,.?/` 表示匹配键盘上的特殊字符。
  • + 表示匹配前面的元素一个或多个次数。
  • $ 表示匹配字符串的结束位置。

这个正则表达式可以匹配只包含中文、英文字母、数字以及键盘上的特殊字符的字符串。

注意:

  • 这个正则表达式仅包含了一部分常见的中文字符,并不包含全部的中文字符范围。如果需要涵盖更多中文字符,可以根据需求扩展范围。
  • 对于特殊字符的范围,这里列出了一些常见的特殊字符,但并不是所有键盘上的特殊字符都包含在内。如果有特定特殊字符需求,可以在方括号中添加相应的字符。
  • 由于涉及中文字符,建议使用 Unicode 编码表示中文字符的范围,因此 \u4E00-\u9FA5 表示中文字符的范围。

校验密码是否符合规则的正则

要校验密码是否符合规则,通常可以使用正则表达式来检查密码是否满足特定的要求。下面是一个示例正则表达式,用于校验密码是否符合一般的密码规则:

这个正则表达式强制密码必须包含至少一个字母、一个数字和一个特殊字符,并且密码长度至少为 8 个字符。

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

解释:

  • ^ 表示匹配字符串的开始位置。
  • (?=.*[A-Za-z]) 表示使用正向肯定预查来确保密码中包含至少一个字母(大小写均可)。
  • (?=.*\d) 表示使用正向肯定预查来确保密码中包含至少一个数字。
  • (?=.*[@$!%*?&]) 表示使用正向肯定预查来确保密码中包含至少一个特殊字符(可以根据需要扩展特殊字符的范围)。
  • [A-Za-z\d@$!%*?&]{8,} 表示匹配至少包含 8 个以上字符的字母、数字和特殊字符的组合。
  • $ 表示匹配字符串的结束位置。
    请根据自己的密码需求更改正则。

校验http或者https端口号的正则

校验 HTTP 或 HTTPS 端口号的正则表达式可以使用以下模式:

const reg = /^(http|https):\/\/(www\.)?[A-Za-z0-9]+\.[A-Za-z]+(:[0-9]+)?$/

解释:

  • ^ 表示匹配字符串的开始位置。
  • (http|https) 表示匹配 “http” 或 “https” 中的一个。
  • :\/\/ 表示匹配 “😕/”。
  • (www\.)? 表示匹配可选的 “www.”,即网址可能有 “www.” 前缀或没有。
  • [A-Za-z0-9]+ 表示匹配至少一个字母或数字。
  • \. 表示匹配点(用于域名部分的分隔)。
  • [A-Za-z]+ 表示匹配至少一个字母(用于域名的顶级域部分)。
  • (:[0-9]+)? 表示匹配可选的冒号加上至少一个数字,用于表示端口号。
  • $ 表示匹配字符串的结束位置。

这个正则表达式可以匹配以下样例:

  • http://www.example.com
  • https://www.example.com
  • http://example.com:8080
  • https://example.com:8443

请注意:

  • 这个正则表达式只校验 URL 中的域名部分和端口号,不涉及其他 URL 组件(例如路径、查询参数等)的校验。
  • 此处的正则表达式是一个简单的示例,实际的 URL 校验可能更加复杂,可以根据需求进行修改和扩展。
  • 在实际应用中,也可以使用编程语言提供的 URL 解析函数或库来解析 URL,并从中提取出域名和端口号进行校验。

只校验端口号

校验端口号是否正确的正则表达式如下:

const reg =/^(0|([1-9]\d{0,3})|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/

解释:
这个正则表达式用于校验端口号是否正确。它可以匹配范围在 0 到 65535 的合法端口号。端口号是一个 16 位无符号整数。

正则表达式的具体规则如下:

  • ^ 表示匹配字符串的开始位置。
  • 0 匹配端口号为 0 的情况。
  • [1-9]\d{0,3} 匹配端口号在 1 到 9999 之间的情况。
  • [1-5]\d{4} 匹配端口号在 10000 到 59999 之间的情况。
  • 6[0-4]\d{3} 匹配端口号在 60000 到 64999 之间的情况。
  • 65[0-4]\d{2} 匹配端口号在 65000 到 65499 之间的情况。
  • 655[0-2]\d 匹配端口号在 65500 到 65529 之间的情况。
  • 6553[0-5] 匹配端口号在 65530 到 65535 之间的情况。
  • $ 表示匹配字符串的结束位置。

这个正则表达式可以用于验证端口号是否在 0 到 65535 的范围内,是否为合法的端口号。

校验正确的ip地址

要校验是否是正确的 IP 地址(IPv4 或 IPv6),可以使用以下两个正则表达式分别进行匹配:

IPv4 地址的正则表达式:

const reg = /^(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})(\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})){3}$/;

IPv6 地址的正则表达式:

const reg = /^([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}$/;

解释:

IPv4 地址的正则表达式:

  • ^ 表示匹配字符串的开始位置。
  • (25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2}) 表示匹配 0 到 255 之间的数字,考虑到前导零的情况。
  • \. 表示匹配点。
  • (\.(25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})){3} 表示匹配三个点隔开的数字段。
  • $ 表示匹配字符串的结束位置。

这个正则表达式可以校验 IPv4 地址是否合法。

IPv6 地址的正则表达式:

  • ^ 表示匹配字符串的开始位置。
  • ([0-9a-fA-F]{1,4}:){7} 表示匹配 7 组以冒号分隔的 16 进制数。
  • [0-9a-fA-F]{1,4} 表示匹配一个 16 进制数。
  • $ 表示匹配字符串的结束位置。

这个正则表达式可以校验 IPv6 地址是否合法。

请注意,正则表达式仅可以校验 IP 地址的格式是否正确,无法判断其是否为真实可用的 IP 地址。如果需要对 IP 地址进行更严格的验证,可以在代码中进一步检查 IP 地址的有效性。

一些号码(电话号、身份证、银行卡)

这里给到的示例只针对中国大陆使用的:文章来源地址https://www.toymoban.com/news/detail-621170.html

const regPhone = /^\+?[0-9\s-]+$/; // 电话号码

const regId = /^[1-9]\d{5}(18|19|20)\d{2}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|3[0-1])\d{3}[\dX]$/; // 身份证号

const regBank = /^[1-9]\d{9,18}$/; //银行卡号

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

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

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

相关文章

  • 【23JavaScript 正则表达式】深入解析JavaScript正则表达式:基础概念、常用方法和实例详解,轻松掌握强大的文本模式匹配工具

    正则表达式是一种强大的文本模式匹配工具,用于在字符串中搜索和操作特定的文本模式。在JavaScript中,正则表达式提供了一种灵活的方式来处理字符串操作。 在JavaScript中,可以通过使用字面量表示法或RegExp对象来创建正则表达式。 字面量表示法 RegExp对象 JavaScript中的正则

    2024年02月08日
    浏览(64)
  • MySQL数据库——MySQL REGEXP:正则表达式

    正则表达式主要用来查询和替换符合某个模式(规则)的文本内容。例如,从一个文件中提取电话号码,查找一篇文章中重复的单词、替换文章中的敏感语汇等,这些地方都可以使用正则表达式。正则表达式强大且灵活,常用于非常复杂的查询。 MySQL 中,使用  REGEXP  

    2024年02月01日
    浏览(51)
  • Javascript正则表达式常用的验证(验证手机号,电话,邮箱,网址等)

    验证手机号码是否合法 验证规则:11位数字,以1开头。 第二位不能是二,不能是0[3456789] 例一: 预览效果  例二: 前面添加 ! 的意义是给这个函数  取反 预览效果 验证电话号码  验证规则:区号+号码,区号以0开头,3位或4位 号码由7位或8位数字组成 区号与号码之间可以

    2023年04月22日
    浏览(52)
  • RegExp正则表达式左限定右限定左右限定,预查询,预查寻,断言 : (?<= , (?= , (?<! , (?!

    (?= , (?= , (?! , (?! 有好多种称呼 , 我称为: 左限定, 右限定, 左否定, 右否定 (?=左限定)    (?=右限定) (?!左否定)    (?!右限定) 再提炼 ?=    ?= ?!    ?! 其它的称呼 正则表达式预查寻分为 4 种: 正向肯定预查: (?=pattern) (?=pattern) 正向否定预查: (?!pattern) (?!pattern) 反向肯定预查

    2024年02月20日
    浏览(50)
  • Oracle使用regexp_like报错ORA-12733 正则表达式太长

    注:此篇内容并没有解决正则表达式太长的问题。 在命令行窗口连接数据库: 其中: username  是你的数据库用户名。 password  是你的数据库密码。 hostname  是数据库服务器的主机名或IP地址。 port  是监听端口,默认是1521。 SID  是系统标识符,是数据库实例的唯一名称。

    2024年04月15日
    浏览(46)
  • Oracle 正则表达式详解(regexp_substr、regexp_instr、regexp_replace、regexp_like)

    文章目录 1 概述 2 匹配规则 3 正则函数 3.1 regexp_substr() 3.2 regexp_instr() 3.3 regexp_replace() 3.4 regexp_like() 1 概述 1. 作用:处理字符时,很强大 1 2. 分类:与下列相似,但功能更加强大(‘支持正则表达式’) (1) regexp_like : 同 like 功能相似(模糊 ‘匹配’) (2) regexp_instr : 同 instr 功

    2024年02月09日
    浏览(54)
  • VBA提高篇_ 31 VBA调用正则表达式_RegExp.Pattern/Global/Execute(s)/Replace(s,r)

    RegExp对象: 属于外部对象,对应的变量需要声明为Object对象,并使用CreateObject函数创建 用于创建各种外部对象,只要将该对象的完整类名作为参数(字符串形式),即可返回一个该类的对象 例: CreateObject(“word.application”),返回一个微软的word对象,用于打开和修改Word对象 结果存入在M

    2024年02月09日
    浏览(50)
  • 【JavaScript】正则表达式

    正则表达式用于对字符串模式匹配及检索替换 修饰符 描述 i 执行对大小写不敏感的匹配。 g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。 m 执行多行匹配。 表达式 描述 [abc] 查找方括号之间的任何字符。 [^abc] 查找任何不在方括号之间的字符。 [0-9] 查找任

    2024年01月21日
    浏览(56)
  • JavaScript使用正则表达式

    正则表达式(RegExp)也称规则表达式(regular expression),是非常强大的字符串操作工具,语法格式为一组特殊字符构成的匹配模式,用来匹配字符串。ECMAScript 3以Perl为基础规范JavaScript正则表达式,实现Perl 5正则表达式的子集。JavaScript通过内置RegExp类型支持正则表达式,String和Re

    2024年02月05日
    浏览(67)
  • JavaScript正则表达式基础

    创建正则表达式,一般有两种写法 .test(\\\'需要验证的字符\\\'),正则的方法用来验证正则的匹配结果true or false 修饰符 写法:/正则/ 修饰符 示例:/abc/i (匹配字符串abc并且不区分大小) i:执行对大小写不敏感的匹配(不区分字母的大小写) g:执行全局匹配(查找所有匹配而非在

    2024年02月09日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包