免费网站建设模版云盘,公司测名,宁波网站建设接单,企业管理培训课程方案文章目录 正则表达式字符含意义RegExp函数RegExp属性RegExp对象方法RegExp构造函数的第二个参数 常用的正则例子只包含数字#xff08;包括正数、负数、零#xff09;只包含中英文数字及键盘上的特殊字符校验密码是否符合规则的正则校验http或者https端口号的正则只校验端口号… 文章目录 正则表达式字符含意义RegExp函数RegExp属性RegExp对象方法RegExp构造函数的第二个参数 常用的正则例子只包含数字包括正数、负数、零只包含中英文数字及键盘上的特殊字符校验密码是否符合规则的正则校验http或者https端口号的正则只校验端口号校验正确的ip地址一些号码电话号、身份证、银行卡 正则表达式字符含意义
正则表达式Regular Expression简称为Regex或RegExp是用于匹配和搜索文本模式的工具。它是一个强大且灵活的字符串处理工具可以用来检查一个字符串是否符合特定的模式或者从一个文本中提取满足条件的部分。
在正则表达式中可以使用不同的元字符和特殊符号来定义模式。以下是一些常见的正则表达式元字符和它们的含义 .匹配任意字符除了换行符。 *匹配前面的元素零次或多次。 匹配前面的元素一次或多次。 ?匹配前面的元素零次或一次。 ^匹配字符串的开始位置。 $匹配字符串的结束位置。 []定义字符集匹配括号内的任意一个字符。 |表示逻辑“或”匹配两个或多个表达式之一。 ()分组将表达式组合为一个子表达式可以使用 | 和量词对整个组进行操作。 用法 当谈到正则表达式时还有一些其他重要的概念和用法需要了解 字符类和量词 在正则表达式中使用方括号 [] 来定义字符类它可以匹配方括号内的任意一个字符。例如[aeiou] 匹配任何一个元音字母。使用花括号 {} 可以指定匹配的次数例如a{2,4} 匹配连续两到四个字母 a。 预定义字符类 正则表达式提供了一些预定义的字符类例如\d 匹配任意一个数字\w 匹配任意一个字母或数字\s 匹配任意一个空白字符。 转义字符 反斜杠 \ 是正则表达式的转义字符用于转义特殊字符使其失去特殊含义。例如\. 可以匹配真正的句点而不是匹配任意字符。 贪婪匹配和非贪婪匹配 正则表达式默认是贪婪匹配即尽可能多地匹配字符。非贪婪匹配在量词后加上问号 ?使其尽可能少地匹配字符。例如.* 是贪婪匹配而 .*? 是非贪婪匹配。 边界匹配 正则表达式可以用 ^ 表示字符串的开始用 $ 表示字符串的结束。这样可以确保模式匹配必须出现在字符串的开始或结束位置。 替换和捕获 正则表达式可以用于替换文本中的匹配项也可以使用括号 () 进行捕获并在替换中引用捕获的内容。 修饰符 正则表达式通常支持一些修饰符来修改其行为。例如i 表示不区分大小写g 表示全局匹配m 表示多行匹配等。
不过不同的编程语言和工具对正则表达式的支持可能有所不同因此在具体应用中需要查阅相应的文档和规范。
RegExp函数
const regex new RegExp(patterngi);
RegExp属性
在 JavaScript 中正则表达式的构造函数 RegExp 具有以下属性 source只读 返回正则表达式的模式字符串即正则表达式的文本模式部分。 global只读 返回一个布尔值表示是否开启全局匹配模式。如果为 true则正则表达式会匹配所有符合模式的文本而不是在找到第一个匹配后停止。 ignoreCase只读 返回一个布尔值表示是否开启忽略大小写模式。如果为 true则正则表达式在匹配时会忽略大小写。 multiline只读 返回一个布尔值表示是否开启多行匹配模式。如果为 true则正则表达式中的 ^ 和 $ 会匹配字符串中每一行的开始和结束位置。 sticky只读 返回一个布尔值表示是否开启粘连匹配模式。如果为 true则正则表达式将会从目标字符串的当前 lastIndex 位置开始匹配。 unicode只读 返回一个布尔值表示是否开启 Unicode 匹配模式。如果为 true则正则表达式会正确处理 Unicode 字符。 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 以及正则表达式对象都有一些方法可以用于执行不同的操作。以下是常见的正则表达式方法
test() 在字符串中测试正则表达式是否匹配。返回一个布尔值表示是否找到匹配项。
const regex /pattern/;
const text This is a pattern test.;
console.log(regex.test(text)); // trueexec() 在字符串中执行正则表达式搜索返回匹配结果的数组或 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); // 继续搜索下一个匹配项
}match() 在字符串中搜索匹配项返回匹配结果的数组或 null。如果正则表达式带有全局标志 g则返回所有匹配项的数组。否则只返回第一个匹配项的数组。
const regex /pattern/g;
const text This is a pattern test.;
const matches text.match(regex);
console.log(matches); // [pattern]search() 在字符串中查找匹配项返回第一个匹配项的索引。如果找不到匹配项则返回 -1。
const regex /pattern/;
const text This is a pattern test.;
console.log(text.search(regex)); // 10replace() 在字符串中使用替换文本替换匹配项。
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 构造函数的第二个参数还可以包含其他标志用于指定正则表达式的附加选项。以下是常见的标志 g全局匹配 查找所有匹配项而不是在找到第一个匹配项后停止。 i忽略大小写 在匹配时忽略目标字符串的大小写。 m多行匹配 开启多行模式。在此模式下^ 和 $ 会匹配字符串中每一行的开始和结束位置而不仅仅是整个字符串的开始和结束。 s单行匹配 开启单行模式。在此模式下. 可以匹配包括换行符在内的任意字符。 uUnicode 匹配 开启 Unicode 模式。在此模式下将正确处理 Unicode 字符。 y粘连匹配 开启粘连匹配模式。正则表达式将从目标字符串的当前 lastIndex 位置开始匹配。 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.comhttps://www.example.comhttp://example.com:8080https://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 地址的有效性。
一些号码电话号、身份证、银行卡
这里给到的示例只针对中国大陆使用的
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}$/; //银行卡号