创建与匹配
1.创建
- 正则表达式的定义 严格校验大小写
var reg_1 = /pattern/; //第一种方法:
var reg_2 = new RegExp('pattern'); //第二种方法:
2-1.正则表达式的exec方法
<script type="text/javascript">
var reg = /test/;
var str = 'testString';
var result = reg.exec(str);
alert(result);
</script>
将会输出test,因为正则表达式reg会匹配str(‘testString’)中的’test’子字符串,并且将其返回。
2-2.正则表达式的test方法
<script type="text/javascript">
var reg = /test/;
var str = 'testString';
var result = reg.test(str);
alert(result);
</script>
将会返回true(一个boolean值)
我们使用下面的方法做正则表达式的匹配:
function execReg(reg,str){
var result = reg.exec(str);
alert(result);
}
表达式匹配规则
-
c{n}
/c{1}/只能匹配一个c
/c{2}/匹配两个连续的c。
/c{n}/匹配n个连续的c。
/c{m,n}/表示匹配大于等于m,小于等于n个连续的c。
/c{n,}/表示匹配大于等于n个连续的c。
示例:
reg = /c{1}/;
str='cainiao';
execReg(reg,str);
结果返回c;
reg = /c{2}/;
str='cainiao';
execReg(reg,str);
结果返回null,匹配失败;
var reg = /c{3,5}/
var str = 'ccccaaac'
console.log(reg.exec(str));
结果返回cccc
- 默认贪婪模式,即尽可能多的匹配
其他常用的正则表达式
- c* 大于等于0个连续的c 等与c{0,}
- c+ 大于等于1个连续的c 等价于c{1,}
- c? 大于等于0个小于等于1个 满足0个就算成功,返回一个空字符串 c{0,1}
- ^c 以c开头的
- c$ 以c结尾
- . 表示的是除\n之外的所有的字符
- b|c 匹配b或者c
- \b边界
\b 匹配字符的边界,也就是它匹配的是一个位置,而不是一个真正的字符。此位置一侧是字符,另一侧是非字符或者字符串边界(开始或者结束位置)
- \B 非边界
- \d 数字 => [0-9]
- \D 非数字
- \w 字母和数字 => [A-Za-z0-9]
- \W 非字母和数字 => [^A-Za-z0-9]
- [abc] 匹配[]内的任意一个字符
- [a-z]小写字母
- [A-Z]大写字母
- [0-9]数字
- [a-zA-Z0-9]表示字母和数字
- ^ 在字符集合中表示的是非
- [^a-z] 非小写字母
- ^ [a-z]以小写字母开头
- [^A-z] 非字母
- \n 换行
- \s 单个空格
- \S 非空格
- ()先判断括号内部的
<script>
var reg = /a*/
var str = 'abcdefaa'
console.log(reg.exec(str))
var reg = /c+/
var str = 'Cxiaoccainiao'
console.log(reg.exec(str));
var reg = /c?/
var str = 'acacs'
console.log(reg.exec(str));
reg = /^ccc/;
str='cc维生素c';
console.log(reg.exec(str))
reg = /c$/;
str='cc维生素';
console.log(reg.exec(str))
var reg = /^./
var str = '\nxiaocainiao'
console.log(reg.exec(str))
reg = /^b|c.+/;
str='aluebcidea';
console.log(reg.exec(str))
reg = /^(b|c).+/ //以b或c开头除去换行符以外尽可能多的匹配
reg = /^[abc]/;
str='sbbs.blueidea.com';
console.log(reg.exec(str))
reg = /\bc/;
str='维生素c';
console.log(reg.exec(str))
reg = /\s.+/;
str='This is a test String.';
console.log(reg.exec(str))
</script>
注意:
- 带有( )的正则表达式,( )内的正则表达式会被视作子表达式,其结果也会被输出
reg = /(\w)(\w)\2\1/;
str='woow';
console.log(reg.exec(str))
reg = /^(?:b|c).+/;
str='bbs.blueidea.com';
console.log(reg.exec(str))
reg = /^(?:b|c)\1/;
str='bbs.blueidea.com';
console.log(reg.exec(str))
// 要想匹配字符*,+,···,需要用\转义
reg = /c*/
reg1 = /c\*/ // 'c*'
- ? 非贪婪 尽可能少的匹配
// a?? 第一个?表示的是数量{0,1} 第二个?表示 非贪婪
var reg = /a??/; //相当于a{0,1}?
var str = 'aaaaaaaaavbhbj' // a
var str = 'baaaaaaaaavbhbj' // ''
console.log(reg.exec(str))