正则表达式是什么
正则表达式是用于匹配字符串中字符组合的模式。 在 JavaScript中,正则表达式也是对象。 这些模式被用于 RegExp 的 exec 和 test 方法, 以及 String 的 match、matchAll、replace、search 和 split 方法
构建方法
1、标记形式
使用一个正则表达式字面量,其由包含在斜杠之间的模式组成; 其中,‘//’是标记,abc表示要匹配的字符
var re = /ab+c/;
脚本加载后,正则表达式字面量就会被编译。当正则表达式保持不变时,使用此方法可获得更好的性能。
2、用正则对象的构造函数RegExp
调用RegExp对象的构造函数
var re = new RegExp("ab+c");
在脚本运行过程中,用构造函数创建的正则表达式会被编译。如果正则表达式将会改变,或者它将会从用户输入等来源中动态地产生,就需要使用构造函数来创建正则表达式。
使用正则表达式的方法
方法 | 作用描述 |
---|
test | 一个在字符串中测试是否匹配的RegExp方法,它返回 true 或 false。 | search | 一个在字符串中测试匹配的String方法,它返回匹配到的位置索引,或者在失败时返回-1。 | exec | 一个在字符串中执行查找匹配的RegExp方法,它返回一个数组(未匹配到则返回 null)。 | match | 一个在字符串中执行查找匹配的String方法,它返回一个数组,在未匹配到时会返回 null。 |
简单匹配:使用 test 或 search 方法; 想得到更多信息:使用 exec 或 match 方法(但是比较慢); 如果使用exec 或 match 方法匹配成功,将返回一个数组并且更新相关的正则表达式对象的属性和预定义的正则表达式对象;如果匹配失败,那么 exec 方法返回 null(也就是false)。
编写正则表达式的模式
使用简单模式
简单模式是由你想直接找到的字符构成(必须连续相同)
let reg = /abc/
reg.test("abcbcc") //true
reg.test("ab cbc") //false
reg.test("adbcc") //false
使用特殊字符
当你需要匹配一个不确定的字符串时,比如寻找一个或多个 “b”,或者寻找空格,可以在模式中使用特殊字符。
断言(Assertions):表示一个匹配在某些条件下发生。断言包含先行断言、后行断言和条件表达式。
字符类(Character Classes):区分不同类型的字符,例如区分字母和数字。
组和范围(Groups and Ranges):表示表达式字符的分组和范围。
量词(Quantifiers):表示匹配的字符或表达式的数量。
Unicode 属性转义(Unicode Property Escapes):基于 unicode 字符属性区分字符。例如大写和小写字母、数学符号和标点。
\ 转义字符
let reg = /\./ //匹配.字符
let reg = /\// //匹配/字符
[ ]匹配字符集合
匹配集合中的字符,只要匹配到其中一个即可
let reg = /[123abc]/
reg.test("a") //true
[^]匹配集合中没有的
有集合中没有的字符即可
let reg = /^123456/
reg.test("123") //false
reg.test("a") //true
. 匹配除了换行符(\r\n)以外的任意字符
let reg = /./
reg.test("a") // true
reg.test("\r") // false
因此带.的不能简单用.匹配,
用\.或[.]匹配
\d 匹配数字
let reg = /\d/
reg.test("1b") //true
let reg = /\d\d/
reg.test("1b12") //true
reg.test("1ab1") //false
\D 匹配不是数字的
let reg = /\D/
reg.test("123b") //true
\w 匹配数字/字母/下划线
let reg = /\w/
reg.test("12") //true
reg.test("_") //true
reg.test(".") //false
\W -> \w相反
\s 匹配空白字符(换行空格等)
let reg = /\s/
reg.test("1 2") //true
reg.test("\t") //true
reg.test("12abc") //false
\S -> \s相反
^ 匹配开头元素
如/^abc/匹配以abc开头的
$ 匹配结尾元素
量词
* 0次或多次;
+ 1或多次;
? 0或1次;
{3} 3次;
{3,} 至少3次;
{3,5} 3~5次;
| 表示或;()表示分组
总结
这里对文章进行总结: 以上就是本文的内容,本文简单介绍了JS正则表达式的相关内容及一些常用用法,了解更多参考下面文档内容。
相关参考
正则表达式文档
|