正则表达式的用途
测试字符串的某个模式(数据有效性验证)
替换文本。
根据模式匹配从字符串中提取一个子字符串
正则表达式的语法
创建正则表达式
var patt=new RegExp(pattern,modifiers);//要加引号
或者更简单的方式:
var patt=/pattern/modifiers;
parttern(模式)描述了表达式的模式
//modifiers(修饰符)用于指定全局匹配,区分大小写,和多行匹配
new RegExp()方式
var re = new RegExp();//RegExp是一个对象,和Aarray一样
//但这样没有任何效果,需要将正则表达式的内容作为字符串传递进去
re =new RegExp("a");//最简单的正则表达式,将匹配字母a
re=new RegExp("a","i");//第二个参数,表示匹配时不分大小写
RegExp构造函数第一个参数为正则表达式的文本内容,而第二个参数则为可选项标志.标志(修饰符)可以组合使用
var re = new RegExp("a","gi");//匹配所有的a或A
字面量
var re = /a/gi;
方括号
方括号用于查找某一范围内的字符
元字符
元字符是拥有特殊含义的字符
量词
正则表达式分组
非捕获组:(?:...),用来代替少量不又没的捕获型分组,不会干扰捕获型分组的编号
捕获组:(...),一个捕获型分组将复制它所匹配的文本,将其放入result数组中。每个捕获型分组将被指定一个编号。从1开始,放入result[1]
向前正向匹配:(?=...),类似于非捕获型分组,但是在这个分组匹配过后,文本将倒回它开始的地方,实际上不匹配任何东西
向前负向匹配:(?!...)勒西与向前正向匹配(非捕获型分组),但是只有当它匹配失败时才进行匹配
与 的使用
1指向分组1所捕获的文本的一个引用,所以它可以被再次匹配
例如:(搜索文本中重复的单词)
n指向分组n中的引用
例子1:给定字符串 str,检查其是否包含连续重复的字母(a-zA-Z),包含返回 true,否则返回 false
function containsRepeatingLetter(str) {
var partern = /([a-zA-Z])\1/;
return partern.test(str);
}
例子2:js实现千分位分隔符
<span style="font-size:14px;">
function format (num) {
var reg=/\d{1,3}(?=(\d{3})+$)/g;
return (num + '').replace(reg, '$&,');
}
</span>
正则表达式 d{1,3}(?=(d{3})+$) 表示前面有1~3个数字,后面的至少由一组3个数字结尾。
?=表示正向引用,可以作为匹配的条件,但匹配到的内容不获取,并且作为下一次查询的开始。
$& 表示与正则表达式相匹配的内容,具体的使用可以查看字符串replace()方法的
正则对象属性
source:返回正则表达式模式的文本的复本。只读。
gobal:【返回布尔值】是否全局匹配
ignoreCase:【返回布尔值】是否忽视大小写
multiline:【返回布尔值】是否跨行
lastIndex:返回字符位置,它是被查找字符串中下一次成功匹配的开始位置。
正则对象方法
compile:可以在脚本执行过程中编译正则表达式,也可以改变已有表达式。把正则表达式编译为内部格式,从而执行的更快。
test:用来检测一个字符串是否匹配某个正则表达式,如果匹配成功,返回 true ,否则返回 false;【返回布尔值】
exec:用来检索字符串中与正则表达式匹配的值。exec() 方法【返回一个数组】,其中存放匹配的结果。如果未找到匹配的值,则返回 null;
toString:字符串形式的模式
支持正则表达式的String方法
replace与正则表达式完成转换
function rgb2hex(sRGB) {
return sRGB.replace(/^rgb\((\d+)\,\s*(\d+)\,\s*(\d+)\)$/g, function(a, r, g, b){//a为匹配项,从第二个最第四个参数都是捕获组
return '#' + hex(r) + hex(g) + hex(b);
});
}
function hex(n){
return n < 16 ? '0' + (+n).toString(16) : (+n).toString(16);
}
参考链接:
菜鸟教程正则表达式
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。