正则表达式
根据正则表达式,来检查一个字符串是否符合规则,
将字符串中符合规则的内容提取出来
创建正则表达式的对象
var XXX = new RegExp
(" 正则表达式 “,” 匹配模式 ");
- 第二个参数
- i 忽略大小写
- g 全局匹配模式
var reg = new RegExp (/d/,'g') // 匹配任意数字【0-9】全局匹配
正则表达式的方法
正则的对象 .test(" String ")
var reg = new RegExp (/d/,'g') // 匹配任意数字【0-9】全局匹配
console.log(reg.test('2312Strsds')); // true
使用这个方法可用来检查一个字符串是否符合正则表达式的规则
- 如果符合则返回true,否则返回false
使用字面量的方式创建正则表达式
var XXX = /正则表达式/匹配模式
var reg = /a/i; // 忽略大小写匹配 a
使用字面量创建的更加简单,
但是使用构造函数创建的会更加灵活
正则表达式的运用
- / a|b/ 表示a 或者 b
- 【】里的内容也是或的关系
- 【ab】 == a | b
- 【a-z】任意小写字母
- 【A-Z】任意大写字母
- 【A-z】任意字母
- 【^】除了
- 【0-9】任意数字
正则表达式与字符串的运用
split()
-
可以将一个字符串拆分为一个数组,并返回
-
方法中可以传递一个正则表达式作为参数,这样方法会根据正则表达拆分字符串
var result = str.split( /[A-z]/ );
根据任意字母拆分字符串
var reg = /[A-z]/
console.log('23ds23ads15'.split(reg)); //["23", "", "23", "", "", "15"]
若是使用正则包含块,则可以将分割的字符也一起保留
var reg = /([A-z])/ // 用了() 包裹住要保留的分割符
console.log('23ds23ads15'.split(reg)); // ["23", "d", "", "s", "23", "a", "", "d", "", "s", "15"]
search()
- 可以搜索字符串是否有指定内容
- 如果搜到则返回第一次出现的索引,没搜到则返回-1
- search 只会搜第一个,加全局也没用
var reg = /[A-z]/
console.log('23ds23ads15'.search(reg)); // 2
match()
可以根据正则表达式,从一个字符串中将符合条件的内容提取出来
默认情况下match只会找到第一个符合要求的就停下来
- 但是可以通过设置为全局作用域/g ,这样就会匹配所有符合的内容
- 可以设置多个匹配模式,顺序随意
match()会将匹配到的内容封装到一个数组中返回,即使之查询到一个结果
// 默认情况下match只会找到第一个符合要求的就停下来
var str = "213213asdasdasd13213";
var result = str.match(/[a-z]/);
console.log(result);
//["a", index: 6, input: "213213asdasdasd13213", groups: undefined]
设置了全局作用
var str = "213213asdasdasd13213";
var result = str.match(/[a-z]/gi); // 设置全局匹配,并且忽略大小写
console.log(result); // ["a", "s", "d", "a", "s", "d", "a", "s", "d"]
replace()
可以将字符串中指定内容替换为新的内容
参数1.被替换的内容 2、新的内容
- 默认替换第一个,
- 也可以加上 /g 全局替换
var str = "213213asdasdasd13213";
var result = str.replace("a" , "_");
// 213213_sdasdasd13213 只替换一个
var str = "213213asdasdasd13213";
var result = str.replace(/[a-z]/g, "_");
// 213213_________13213 全部字母替换
正则表达式的语法
量词
通过量词可以设置内容出现的次数
- { n }正好出现n次
- {m , n}正好出现m-n次
- {m, }出现m次以上
-
+
至少一个,相当于{1, } -
*
0个或多个,相当于{0, } -
?
0个或1个,相当于{0 , 1}
// `+` 至少一个,相当于{1, }
var str = '123sage235wis'
var reg = /[a-z]+/g
str.match(reg) // ["sage", "wis"]
// `*` 0个或多个,相当于{0, }
var str = '123sage235wis'
var reg = /[a-z]*/g
str.match(reg) // ["", "", "", "sage", "", "", "", "wis", ""]
// ? 0个或1个,相当于{0 , 1}
var str = '123sage235wis'
var reg = /[a-z]?/g
str.match(reg) // ["", "", "", "s", "a", "g", "e", "", "", "", "w", "i", "s", ""]
检查一个字符串是否以a开头
- ^ 表示开头
- $ 表示结尾
同时用 ^ $
则表示要完全一样
手机号的规则:1、以1开头,2、第二位3-9任意数,3、三位以后任意数字9个
var phone = /^1[3-9] [0-9] {9}$/ // 以1开头第二位要求[3-9]随后的第三位以后[0-9]{9} 任意9个并且数字结尾
正则表达式语法2
语法缩写
正则表达式中
用 .
来表示任意字符
\w 任意字母、数字、_ 相当于 [A-z0-9_]
\W 除了字母、数字、_ 相当于 [^A-z0-9_]
\d 任意数字 相当于 [0-9]
\D 除了数字 相当于 [^0-9]
\s 空格 相当于 / /g
var str = '123s age235 wis'
var reg = / /g
str.match(reg) // [' ',' ']
\S 除了空格
\b 单词边界
var str = '123s age 235 age22'
var reg = /\bage\b/g
// ['age'] age22 不会输出因为不符合 单词边界条件
\B 除了单词边界