JS系列之正则

建立体式格局

字面量建立体式格局

 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    婚配单词的最先或完毕
\B    婚配非单词边境
\G    上一个婚配的末端(本次婚配最先)
\A    字符串开首(相似^,但不受处置惩罚多行选项的影响)
\Z    字符串末端或行尾(不受处置惩罚多行选项的影响)
\z    字符串末端(相似$,但不受处置惩罚多行选项的影响)

基础元字符

\     在非特别字符之前的反斜杠示意下一个字符是特别的
|     逻辑或操作符
[]    定义一个字符鸠合,婚配字符鸠合中的一个字符,在字符鸠合内里像 .,\这些字符都示意其自身
[^]   对上面一个鸠合取非
-     定义一个区间,比方[A-Z],其首尾字符在 ASCII 字符集内里
()    分组,将相干的元素归拢,组成单个元素;多选构造,(...|...),划定能够涌现的多个子表达式;援用分组,存储子表达式婚配文本,供以后援用。

特别元字符

.     婚配除了换行符以外的任何单个字符
\d    0~9恣意一个数字
\D    非0~9之间的恣意字符
\w    婚配包含下划线的任何单词字符
\W    婚配任何非单词字符
\S    非空字符
\s    不可见字符,如空格、回车、制表符
a|b      a或许b恣意一个

[abc]    a或b或c恣意一个
[^abc]   除了a\b\c以外的

[a-z]    示意a到z中恣意一个字母 [0-9]等价于\d
[^a-z]

量词

*        反复零次或更屡次
+        反复一次或更屡次
?        反复零次或一次
{n}      反复n次
{n,}     反复n次或更屡次
{n,m}    反复n到m次

字符类

\t Tab
\n 换行符
\r 回车符
\f 换页符
\e Escape

贪欲与非贪欲形式

贪欲婚配: 正则表达式平常趋向于最大长度婚配,也就是所谓的贪欲婚配
非贪欲婚配:就是婚配到效果就好,起码的婚配字符

默许是贪欲形式;在量词背面直接加上一个问号?就黑白贪欲形式。

反向援用

当一个正则表达式被分组以后,每个组将自动被给予一个组号,该组号能够代表该组的表达式。个中组号的编制规则为:从左到右、以分组的左括号“(”为标识,第一个分组的组号为1,第二个分组的组号为2,依此类推。

“\number”中的number就是组号

regex=(abc)d\1能够婚配字符串abcdabc,即\1示意把获取到的第一组再婚配一次,以下:
let regg = /(abc)d\1/;
"abcabcdbc".match(regg);    //["abcdabc", "abc", index: 3, input: "abcabcdabc", groups: undefined]

预搜刮(零宽断言)

预搜刮,又叫零宽断言,又叫环顾,它是对位置的婚配,与定位字符(边境字符)相似。

(?=pattern)  断言此位置的背面能婚配表达式pattern
(?<=pattern) 断言此位置的前面能婚配表达式pattern
(?!pattern)  断言此位置的背面不能婚配表达式pattern
(?<!pattern) 断言此位置的前面不能婚配表达式pattern

RegExp 对象属性

lastIndex    一个整数,标示最先下一次婚配的字符位置。        
source    正则表达式的源文本。

RegExp 对象要领

test

test接收一个字符串参数,假如正则表达式与指定的字符串婚配返回 true 不然返回 false

let reg = /^Hello/

reg.test('Hello World') // => true
reg.test('Say Hello') // => false

exec

exec一样接收一个字符串为参数,返回一个数组,个中寄存婚配的效果。假如未找到婚配,则返回值为 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 示意原有的字符串
    原文作者:zhouzhou
    原文地址: https://segmentfault.com/a/1190000017744176
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞