摘要:反向引用当一个正则表达式被分组之后,每一个组将自动被赋予一个组号,该组号可以代表该组的表达式。对象方法接受一个字符串参数,如果正则表达式与指定的字符串匹配返回否则返回同样接受一个字符串为参数,返回一个数组,其中存放匹配的结果。
创建方式
字面量创建方式
var reg = /pattern/flags;
实例创建方式
var reg = new RegExp(pattern, flags);
字面量创建方式和构造函数创建方式的区别:
1.字面量创建方式不能进行字符串拼接,实例创建方式可以
var regParam = "cm"; var reg1 = new RegExp(regParam+"1"); var reg2 = /regParam/; console.log(reg1); // /cm1/ console.log(reg2); // /regParam/
2.字面量创建方式特殊含义的字符不需要转义,实例创建方式需要转义
var reg1 = new RegExp("d"); // /d/ var reg2 = new RegExp("d") // /d/ var reg3 = /d/; // /d/修饰符
i ignoreCase 忽略大小写 g global 全局匹配 m multiline 多行匹配
RegExp 对象属性:
let reg = /abc/igm; reg.global //true reg.ignoreCase //true reg.multiline //true元字符 位置元字符
^ 匹配字符串的开始 $ 匹配字符串的结束 匹配单词的开始或结束 B 匹配非单词边界 G 上一个匹配的结尾(本次匹配开始) A 字符串开头(类似^,但不受处理多行选项的影响) 字符串结尾或行尾(不受处理多行选项的影响) z 字符串结尾(类似$,但不受处理多行选项的影响)基本元字符
在非特殊字符之前的反斜杠表示下一个字符是特殊的 | 逻辑或操作符 [] 定义一个字符集合,匹配字符集合中的一个字符,在字符集合里面像 .,这些字符都表示其本身 [^] 对上面一个集合取非 - 定义一个区间,例如[A-Z],其首尾字符在 ASCII 字符集里面 () 分组,将相关的元素归拢,构成单个元素;多选结构,(...|...),规定可能出现的多个子表达式;引用分组,存储子表达式匹配文本,供之后引用。特殊元字符
. 匹配除了换行符之外的任何单个字符 d 0~9任意一个数字 D 非0~9之间的任意字符 w 匹配包括下划线的任何单词字符 W 匹配任何非单词字符 S 非空字符 s 不可见字符,如空格、回车、制表符
a|b a或者b任意一个 [abc] a或b或c任意一个 [^abc] 除了ac之外的 [a-z] 表示a到z中任意一个字母 [0-9]等价于d [^a-z]量词
* 重复零次或更多次 + 重复一次或更多次 ? 重复零次或一次 {n} 重复n次 {n,} 重复n次或更多次 {n,m} 重复n到m次字符类
Tab 换行符 回车符 f 换页符 e Escape贪婪与非贪婪模式
贪婪匹配: 正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配
非贪婪匹配:就是匹配到结果就好,最少的匹配字符
默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。反向引用
当一个正则表达式被分组之后,每一个组将自动被赋予一个组号,该组号可以代表该组的表达式。其中组号的编制规则为:从左到右、以分组的左括号“(”为标识,第一个分组的组号为1,第二个分组的组号为2,依此类推。
“ umber”中的number就是组号 regex=(abc)d1可以匹配字符串abcdabc,即1表示把获取到的第一组再匹配一次,如下: let regg = /(abc)d1/; "abcabcdbc".match(regg); //["abcdabc", "abc", index: 3, input: "abcabcdabc", groups: undefined]预搜索(零宽断言)
预搜索,又叫零宽断言,又叫环视,它是对位置的匹配,与定位字符(边界字符)类似。
(?=pattern) 断言此位置的后面能匹配表达式pattern (?<=pattern) 断言此位置的前面能匹配表达式pattern (?!pattern) 断言此位置的后面不能匹配表达式pattern (? RegExp 对象属性lastIndex 一个整数,标示开始下一次匹配的字符位置。 source 正则表达式的源文本。RegExp 对象方法 testtest接受一个字符串参数,如果正则表达式与指定的字符串匹配返回 true 否则返回 false
let reg = /^Hello/ reg.test("Hello World") // => true reg.test("Say Hello") // => falseexecexec同样接受一个字符串为参数,返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
let reg = /([a-z])d+/ let str = "a233" let result = reg.exec(str) // ["a233", "a", index: 0, input: "a233"] // 0:"a233" 表示我们捕获到的字符串 // 1:"a" 表示我们捕获到的分组字符串 // index:0 表示捕获开始位置的索引 // input 表示原有的字符串
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/100650.html
摘要:函数式编程前端掘金引言面向对象编程一直以来都是中的主导范式。函数式编程是一种强调减少对程序外部状态产生改变的方式。 JavaScript 函数式编程 - 前端 - 掘金引言 面向对象编程一直以来都是JavaScript中的主导范式。JavaScript作为一门多范式编程语言,然而,近几年,函数式编程越来越多得受到开发者的青睐。函数式编程是一种强调减少对程序外部状态产生改变的方式。因此,...
阅读 2335·2021-11-23 09:51
阅读 1137·2021-11-22 13:52
阅读 3610·2021-11-10 11:35
阅读 1187·2021-10-25 09:47
阅读 2994·2021-09-07 09:58
阅读 1059·2019-08-30 15:54
阅读 2817·2019-08-29 14:21
阅读 3024·2019-08-29 12:20