js之正则表达式
测试工具
掘金待整理
https://juejin.cn/post/6844903933995925518
https://juejin.cn/post/6868559656088944648
1 概述
正则表达式( Regular Expression )是用于匹配字符串中字符组合的模式。在 JavaScript中,正则表达式也是对象。
正则表通常被用来检索、替换那些符合某个模式(规则)的文本,例如验证表单:用户名表单只能输入英文字母、数字或者下划线, 昵称输入框中可以输入中文(匹配)。此外,正则表达式还常用于过滤掉页面内容中的一些敏感词(替换),或从字符串中获取我们想要的特定部分(提取)等 。
- 正则表达式(Regular Expression)是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符")
- 正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串
- 正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等
1.1 作用
1、 测试字符串内的模式:例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。
2、 替换文本:可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。
3、 基于模式匹配从字符串中提取子字符串:可以查找文档内或输入域内特定的文本。
2 创建正则表达式
1、 通过调用 RegExp
对象的构造函数创建
var 变量名 = new RegExp(/表达式/);
2、 通过 字面量 的方式创建 -- 推荐
var 变量名 = /表达式/
正则表达式还可以加一个参数
var 变量名 = /表达式/[switch]
switch(也称为修饰符) ,是指按照什么样的模式来匹配,有三种值:
g:全局匹配
i:忽略大小写
gi:全局匹配 + 忽略大小写
2.1 测试正则表达式 test
test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回 true 或 false,其参数是测试字符串
// 检测str文本是否符合我们写的正则表达式规范
regexObj.test(str)
1、 regexObj 是写的正则表达式
2、 str 我们要测试的文本
3 正则特殊字符
3.1 边界符
正则表达式中的边界符(位置符)用来提示字符所处的位置,主要有两个字符
边界符 | 说明 |
---|---|
^ | 表示匹配行首的文本(以谁开始) |
$ | 表示匹配行尾巴的文本(以谁结束) |
如果 ^ 和 $ 在一起,表示必须是精确匹配
3.2 字符类
字符类表示有一系列字符可供选择,只要匹配其中一个就可以了。所有可供选择的字符都放在方括号内
字符类 | 案例 | 说明 |
---|---|---|
[] 方括号 | /[abc]/.test('andy') // true | 后面的字符串只要包含 abc 中任意一个字符,都返回 true |
[-] 方括号内部: 范围符- | /[1]$/.test('c') // true | a 到 z 26个小写英文字母都可以 |
[^] 方括号内部: 取反符^ | /[^abc]/ .test('andy') // false |
只要包含方括号内的字符,都返回 false |
3.3 量词符
量词符 | 说明 |
---|---|
* | 重复0次或多次 >=0 |
+ | 重复1次或多次 >=1 |
? | 重复0次或1次 0或者1 |
重复 n 次 | |
重复 n 次 或更多次 >=n | |
重复 n 次 到 m 次 >=n && <=m |
3.4 预定义类
预定义类 | 说明 |
---|---|
\d | 匹配0-9之间的任一数字,相当于 [0-9] |
\D | 匹配所有0-9以外的字符,相当于 [^0-9] |
\w | 匹配任意的字母、数字和下划线,相当于 [a-zA-Z0-9_] |
\W | 除所有字母、数字和下划线以外的字符,相当于 [^a-zA-Z0-9_] |
\s | 匹配空格 (包括换行符、制表符、空格等)(或匹配任意的空白符),相当于[\t\r\n\v\f] |
\S | 匹配非空格的字符,相当于 [^\t\r\n\v\f] |
. | 匹配除了换行符以外的所有字符 |
4 正则替换 replace
replace() 方法可以实现替换字符串操作,用来替换的参数可以是一个字符串或是一个正则表达式
stringObject.replace(regexp/substr,replacement)
1、 第一个参数: 被替换的字符串 或者 正则表达式
2、 第二个参数: 替换为的字符串(想要替换为什么字符串)
3、 返回值是一个替换完毕的新字符串
a-z ↩︎