用处:
- 测试字符串内的模式。
例如,可以测试输入字符串,以查看字符串内是否出现电话号码模式或信用卡号码模式。这称为数据验证。 - 替换文本。
可以使用正则表达式来识别文档中的特定文本,完全删除该文本或者用其他文本替换它。 - 基于模式匹配从字符串中提取子字符串。
可以查找文档内或输入域内特定的文本。
如果正则表达式带有g修饰符,则每一次test方法都从上一次结束的位置开始向后匹配。同时,可以通过正则对象的lastIndex属性指定开始搜索的位置。
var xReg = /x/g;
var str = 'xyz_x1_y1_x3';
xReg.lastIndex; // 0
xReg.test(str); // true
xReg.lastIndex; // 1
xReg.test(str); // true
xReg.lastIndex; // 5
// 指定位置开始 指定下次匹配从最后一位开始,就匹配不到了
xReg.lastIndex = 11; // 11
xReg.test(str); // false
xReg.lastIndex; // 0
实践:
var indexReg = /^(?:http|https).+\/jwebui\/pages\/themes\/(\w+)\/\1\.jspx(\?\S+)?$/i ;
- 最开始的^ 和最后的$分别表示匹配的开始和结束。
- (?:http|https)表示两者之一,这么写是非获取的组匹配,()不会被分组存储。也可以写成(http|https) 但是后面的\1就需要替换成\2了,因为这么写时此处形成了第一个分组。
- .+ 就是任意字符至少出现一次。
- \/jwebui\/pages\/themes\/ 就是匹配字符串”/jwebui/pages/themes/”。
- (\w+) 作为第一个分组,表示任意字母或数字或下划线或汉字至少出现一次。
- \1表示对第一个分组的引用,再重复第一分组的内容 。
- .jspx 表示.jspx。
- (\?\S+)? 表示(\?\S+) 匹配的内容出现0次或一次。其中:
\? 表示? 。
\S+ 表示任意可见字符出现至少一次。
将字符串转换为驼峰表示法
function toCampStyle(str){
var reg=/-([a-z]+)/ig;
return str.replace(reg,function(all,letter){
return letter.slice(0,1).toUpperCase()+letter.slice(1)
})
}
检测有无重复字母
var reg=/([a-zA-Z])\1/g;
var str='aadididi'
console.log(reg.test(str))
实现千分位分隔符
function format (num) {
var reg=/\d{1,3}(?=(\d{3})+$)/g;
return (num + '').replace(reg, '$&,');
}