正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串做替换或者从某个串中取出符合某个条件的子串等。
创建方式:
- 正则表达式自变量
语法:/正则表达式主体/修饰符(可选)例:
var reg = /abc/;
- new RegExp(),RegExp()中有两个参数,参数1为正则规则,参数2为正则表达式修饰符
var reg =new RegExp("abc");
正则表达式修饰符
- i:执行对大小写不敏感的匹配。
- g:执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
- m:执行多行匹配。
正则表达式模式
方括号用于查找某个范围内的字符,一个对方括号占一位字符:
- [abc] :查找方括号内的任何字符,例:
var reg=/[ad]/;//查找第一位为a或者d字符串
var str = "abc";
console.log(reg.test(str));//true
- [0-9]、[a-z]、[A-Z]、[A-z]、[0-9A-z]:查找方括号之间的任何字符,例:
var reg=/[0-9]/;//查找第一位为0-9的字符串
var str = "abc";
console.log(reg.test(str));//false
- [^ab]:查找给定集合外的任何字符,例:
var reg=/[^ab]/;//查找第一位不是a或b的字符串
var str = "abc";
console.log(reg.test(str));//true
- (x|y) :查找任何以 | 分隔的选项,例:
var reg=/[ab|b];//查找第一位是a、b或b的字符串
var str = "abc";
console.log(reg.test(str));//true
元字符
- *:查找单个字符,除了换行和结束符
- \w:相当于[0-9A-z]
- \W:相当于[0-9A-z]、[\w]
- \d:相当于[0-9]
- \D:相当于[0-9]、[\d]
- \s:查找空白字符,相当于[\t\f\r\n\v]
- \S:查找非空白字符,相当于[\t\f\r\n\v]、[\s]
- \b:单词边界
- \B:非单词边界
- \uxxxx:查找以十六进制数 xxxx 规定的 Unicode 字符
量词
- n+:匹配任何包含至少一个 n 的字符串{}。
- n*:匹配任何包含零个或多个 n 的字符串。
- n?:匹配任何包含零个或一个 n 的字符串。
- n{x}:匹配任何包含x个 n 的字符串。
- n{x,y}:匹配任何包含x到y个 n 的字符串。
- n$:匹配以n结尾的字符串
- ^n:匹配以n开头的字符串
- ?=n:匹配任何其后紧接着指定字符串n的字符集
- ?!n:匹配任何其后没有紧接着指定字符串n的字符集
例题
1、检验一个字符串首尾是否是数字?
var reg=/^\d|\d$/;
var str = "0abc";
console.log(reg.test(str));//true
2、检验一个字符串首尾是否都是数字?
var reg=/^\d[\w\W]*\d$/;
var str = "0abc1";
console.log(reg.test(str));//false
3、将the-first-name转换为theFirstName
var reg=/-(\w)/g;
var str="the-first-name";
console.log(str.replace(reg,function($,$1){
return $1.toUpperCase();
}));//theFirstName
4、字符串去重,例如将"aaaaaabbbbcccccccccddddddd"改为"abcd"
var reg1=/(\w)\1*/g;
var str1="aaaaaabbbbcccccccccddddddd";
console.log(str.replace(reg1,$1));//abcd
5、将100000000000改为100.000.000.000。
var str="100000000000"
var reg=/(?=(\B)(\d{3})+$)/g;
console.log(str.replace(reg,"."));//100.000.000.000