正则基础知识
正则的一些基础知识
创建正则
-
通过构造函数
const pattern = new RegExp(pattern,modifiers)
-
pattern
: 匹配的字符串形式,可以有变量 -
modifiers
: 匹配的模式,g(全局),i(忽略大小写),u(多行)
-
-
字面量的形式:
const pattern = /pattern/g
-
pattern
: 匹配的内容
-
-
reg.test(str)
: 检测一个字符串是否有要匹配的内容,返回一个布尔值
-
reg.exec(str)
:该方法为专门为捕获组而设计的(每一个小括号是一个捕获组)-
参数:要匹配的字符串
-
返回值:返回的是一个数组。如果不匹配则返回null
-
关于返回值数组的说明:
-
它确实是Array的实例。
-
但是这个数组有两个额外的属性:index和input
-
index:表示匹配的字符串在源字符串中的索引
-
input:表示匹配的源字符串。
-
数组的第一项目是与整个模式匹配的字符串,其他项是与模式中捕获组匹配的字符串
-
如果没有捕获组,则数组中只有第一项
-
-
正则表达式的一些规则
-
/[0-9a-zA-Z]/
: 匹配[]
里面的任意字符 -
/(abc|def)/
: 匹配|
中的一项 -
/[^0-9]/
: 匹配非数字 -
\d
: 匹配数字 -
\D
: 匹配非数字 -
\w
: 匹配字母和数字以及 _ -
\W
: 匹配非(字母和数字以及_) -
\b
: 匹配空格子字符 -
\n
: 匹配换行符 -
\t
: 匹配制表符 -
\0
: 匹配null字符 -
\r
:匹配回车字符 -
\s
: 匹配空白字符、空格、字表符和换行符 -
\S
: 匹配非空白字符 -
^
: 行首匹配 -
$
: 行尾匹配 -
?
: 0或1个 -
*
: 0或多个 -
+
: 至少一个 -
{m}
: m次 -
{m,n}
: m到n次 -
{m,}
: 至少m次
支持正则表达式的字符串方法
-
search
: 检索与正则表达式相匹配的第一个匹配项的索引 -
match
: 找到一个或多个正则表达式的匹配。其实和正则表达式的exec
方法比较像 -
replace
(reg|str,str|fn)-
第二个参数是一个字符串时,会对匹配到的字符进行替换.(正则可以全局替换)
-
第二个参数是函数时,会对匹配到每一个字符进行回调,回调的第一个参数是匹配到的字符
-
第一个参数是字符串时,回调的第二个参数时匹配到的字符的索引,第三个参数是整个字符
-
第二个参数是正则时,若匹配到的字符没有捕获时,和上面一样.若有捕获,则捕获的项会作为参数传进来,捕获后面的参数则和上面的一样
-
-
-
一些例子
-
获取query的参数
function getQueryByName(name) {
const search = location.search
const ret = search.match(new RegExp('[?&]'+name+'([^&]'*))
return ret&&ret.length > 0 ? ret[1] : ''
}
-