建立体式格局
字面量建立体式格局
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 示意原有的字符串