首页 > 代码库 > JavaScript正则表达式
JavaScript正则表达式
JS中两种创建正则表达式的方式:
1,使用new关键字创建
var box = new RegExp(‘box‘,‘ig‘); //第一个参数是模式字符串,两个反斜杠是正则表达式的字面量表示方法,
//第二个参数是模式修饰符 i 忽略大小写 g 全局匹配 m 多行匹配
2,使用字面量方式创建(常用的方法)
var box = /box/ig;
测试正则表达式
test()方法 在字符串中测试模式匹配,返回true和false
exec()方法 在字符串中执行匹配,返回匹配结果数组,无结果返回null
例子:
var pattern = new RegExp(‘Box‘,i);
var str = ‘This is a box‘;
alert(pattern.test(str)); //true
var pattern = /box/i;
var str = ‘This is a box‘;
alert(pattern.test(str)); //true
var pattern = /box/i;
var str = ‘box‘;
alert(typeof pattern.exec(str)); //返回的数据类型是object,如果没有匹配到就返回null
使用字符串的正则表达式方法
str.match(pattern)方法 返回pattern中的子串或者null
var pattern = /box/i;
var str = ‘This is a box!That is a box!‘;
alert(str.match(pattern)); //返回数组
str.search(pattern)方法,返回的是第一匹配结果的位置,如果没有匹配则返回-
var pattern = /box/i;
var str = ‘This is a box!That is a box!‘;
alert(str.search(pattern)); //返回数组
str.replace(pattern,str); //返回用pattern替换匹配结果的字符串
var pattern = /box/i;
var str = ‘This is a box!That is a box!‘;
alert(str.replace(pattern,‘Tom‘)); //返回数替换之后的字符串,默认只替换第一个
str.split(pattern) //返回按指定字符分割的数组
var pattern = /!/i;
var str = ‘This is a box‘;
alert(str.split(pattern)); //This,is,a,box
正则表达式的静态属性
var pattern = /google/i;
var str = ‘this is google!‘;
pattern.tset(str); //必须执行一下,静态属性才有效
alert(RegExp.input); //this is google
alert(RegExp.leftContext); //匹配字符串的左字符串
alert(RegExp.rightContext); //匹配字符串的右字符串
alert(RegExp.lastMatch); //匹配最后一次匹配的字符串
正则表达式的实例属性
global,ignoreCase,lastIndex,multiline,Source
var pattern = /google/;
alert(pattern.global); //false
获取控制
‘ . ‘ 匹配除换行之外的任意一个字符
‘ * ‘ 匹配任意零个一个或多个字符
‘ + ‘ 匹配任意一个或多个字符
‘ ? ‘ 匹配任意一个或零个字符
var pattern = /go{2,4}gle/; 匹配o字符2到4次
var pattern = /go{2}gle/; 匹配o字符2次
var pattern = /go{2,}gle/; 匹配o字符2次以上
var pattern = /go[a-z]gle/; 匹配a-z之间任意字母
var pattern = /go[A-Z]gle/; 匹配A-Z之间任意字母
var pattern = /go[0-9]gle/; 匹配0-9之间任意数字
var pattern = /go[a-zA-Z0-9]gle/; 匹配a-zA-Z0-9之间的任意字符
var pattern = /go[^0-9]gle/; 匹配非0-9之间任意数字
var pattern = /^[0-9]oogle/; 匹配0-9之间任意数字开头的
var pattern = /\woogle/; 匹配一个任意数字字母下划线
var pattern = /\Woogle/; 匹配一个任意非数字字母下划线
var pattern = /\doogle/; 匹配一个任意数字
var pattern = /\Doogle/; 匹配一个任意非数字
匹配空格的方法
(1) 直接使用空格匹配
(2)\s表示空格匹配
\b匹配到达边界
匹配选择模式
var pattern = /google|baidu|bing/;
var str = ‘this is a bing‘;
alert(pattern.test(str)); //true 匹配概念,不是相等
var pattern = /google{4,8}$/;
var str = ‘googleeeeee‘;
alert(pattern.test(str)); //true 匹配前面字符4-8次
var pattern = /(google){4,8}$/;
var str = ‘googlegooglegooglegoogle‘;
alert(pattern.test(str)); //true 匹配前面分组4-8次
贪婪和惰性
var pattern = /[a-z]+/; 这里使用了贪婪模式
var str = ‘abcdefg‘;
alert(str.replace(pattern,‘1‘)); // 1
var pattern = /[a-z]+?/; 这里使用了惰性模式
var str = ‘abcdefg‘;
alert(str.replace(pattern,‘1‘)); // 1bcdefg
var pattern = /[a-z]+?/g; 这里使用了惰性模式并开启全局
var str = ‘abcdefg‘;
alert(str.replace(pattern,‘1‘)); // 1111111
var pattern = /8(.*)8/; 使用了贪婪
var str = ‘8google8 8google8 8google8‘;
document.write(str.replace(pattern,‘<strong>$1</strong>‘)); //<strong>8google8 8google8 8google8</strong>
var pattern = /8(.*?)8/g; 使用了惰性,开启全局
var str = ‘8google8 8google8 8google8‘;
document.write(str.replace(pattern,‘<strong>$1</strong>‘)); //<strong>google</strong><strong>google8</strong><strong>8google8</strong>
更多好文章:请到IT人才网