正则表达式
- 用于定义一些字符串的规则
- 计算机可以根据正则表达式,来检查一个字符串是否符合规则
- 获取,将字符串中符合规则的内容提取出来
对象创建正则表达式
语法:
var 变量 = new RegExp("正则表达式","匹配模式")
使用typeof 检查正则对象,会返回 object
var reg = new RegExp("a"); //这个正则表达式可以检查一个字符串中是否含有a
var reg = new RegExp("a","i"); //构造函数中可以传递一个匹配模式作为第二个参数
i: 忽略大小写
g:全局匹配模式
var result = reg.test(str);//检查是否符合正则表达式规则。是返回true,否返回false
字面量创建正则表达式
语法:
var 变量 = /正则表达式/匹配模式 ;
总结:
字面量创建正则表达式,更简单。
构造函数创建,更加灵活。
书写正则表达式:
| :表示或的意思
//创建一个表达式检查字符串中是否含有 a或b
var reg = /a|b/i;
console.log(reg.test("asdfsa"));//true
[]:中括号中的内容,也是或的关系
[ab] ===a|b
[a-z] 任意的小写字母
[A-Z] 任意的大写字母
[A-z] 任意的字母
[0-9] 任意的数字
检查是否含有 abc 或 aec 或 adc
reg = /a[bde]c/;
[^ab]:如果有 除ab之外的字符,返回true;否则false
reg = /[^ab]/;
console.log(reg.test("abc")); //true
正则表达式和字符串
split(regexp/substr)
【自带全局匹配】
- 可以将一个字符串拆分为一个数组
- 方法中可以传递一个
正则表达式
作为参数,这样方法将会根据正则表达式去拆分字符串
var str = "345s35 dgft4gdfdf4";
var result = str.split(/[A-z]/); //根据任意字母来将字符串拆分
search(regexp/substr)
【只会返回第一个出现的索引,即使设置g
】
- 可以搜索字符串中是否含有指定内容
- 如果搜索到指定内容,则会返回第一次
出现的索引
,如果没有搜索到则返回-1
- 可以接受一个正则表达式作为参数,然后会根据正则表达式去检索字符串
//搜索字符串中是否含有 abd,aec,afc
result = str.search(/a[bef]c/);
match(regexp/substr)
- 可以根据正则表达式,从一个字符串中将
符合条件的内容提取出来
默认情况下我们的
match
只会找到第一个符合要求的内容,找到以后就停止检索
- 可以设置正则表达式为全局匹配模式,这样就会匹配到所有的内容
- 可设置多个匹配模式,顺序无所谓
match()
会将匹配到的内容封装到一个数组中返回,即使只查到一个结果
str = "1a2b3csdfhDKJF";
var result = str.match(/[a-z]/gi);
console.log(result);
console.log(typeof result);// object
console.log(Array.isArray(result)); //true
console.log(result[0]);//a
replace(regexp/substr , replacement)
- 使用
replacement
替换substr
。- 如果 regexp 具有全局标志 g,那么 replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。
正则表达式语法
量词
通过量词阔以设置
一个内容
出现的次数量词只对它前边的
一个内容
起作用
{n} :正好出现 n 次
{m,n} :出现 m-n 次
{m,} :出现 m 次以上
+ :至少一个,相当于 {1 ,}
* :0个或者多个,相当于{0,}
? :0个或1个,相当于{ 0 , 1}
^ :表示开头
$ :表示结尾
() :括号里面的是一个整体
reg = /^(xxx)$/; //同时使用^ $则要求字符串必须完全符合正则表达式
转义字符
在正则表达式中使用
\
作为转义字符
\.
表示.
\\
表示\
在正则对象构造函数中,参数是一个字符串,而
\
是字符串中的转义字符。
\\
表示\
. :表示任意字符
var reg = /\\/; //检查字符串中是否含有 \
=====> var reg = new RegExp("\\\\");
var reg2 = /\./;//检查字符串中是否含有 .
====> var reg2 = new RegExp("\\.");
RegExp(str
) ====转义===> reg
字面量 ====转义===> 真正表达的意思
\w :字母,数字,_ [A-z0-9_]
\W :除了 字母,数字,_ [^A-z0-9_]
\d :任意的数字 [0-9]
\D :除了数字 [^0-9]
\s :空格
\S :除了空格
\b :单词边界
: 寻找单词hello ====> reg =/\bhello\b/
;
\B :除了单词边界