js正则表达式replace替换变量方法


Posted in Javascript onMay 21, 2016

JavaScript正则实战(会根据最近写的不断更新)

1、javascript 正则对象替换创建 和用法: /pattern/flags 先简单案例学习认识下replace能干什么

正则表达式构造函数: new RegExp("pattern"[,"flags"]);
正则表达式替换变量函数:stringObj.replace(RegExp,replace Text);

参数说明:

pattern -- 一个正则表达式文本
flags -- 如果存在,将是以下值:
g: 全局匹配
i: 忽略大小写
gi: 以上组合

//下面的例子用来获取url的两个参数,并返回urlRewrite之前的真实Url
var reg=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
var url="http://www.qidian.com/BookReader/1017141,20361055.aspx";

//方式一,最简单常用的方式
var rep=url.replace(reg,"$1ShowBook.aspx?bookId=$2&chapterId=$3");
alert(rep);

//方式二 ,采用固定参数的回调函数
var rep2=url.replace(reg,function(m,p1,p2,p3){return p1+"ShowBook.aspx?bookId="+p3+"&chapterId="+p3});
alert(rep2);

//方式三,采用非固定参数的回调函数
var rep3=url.replace(reg,function(){var args=arguments; return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];});
alert(rep3);


//方法四
//方式四和方法三很类似, 除了返回替换后的字符串外,还可以单独获取参数
var bookId;
var chapterId;
function capText()
{
  var args=arguments; 
  bookId=args[2];
  chapterId=args[3];
  return args[1]+"ShowBook.aspx?bookId="+args[2]+"&chapterId="+args[3];
}

var rep4=url.replace(reg,capText);
alert(rep4);
alert(bookId);
alert(chapterId);


//使用test方法获取分组
var reg3=new RegExp("(http://www.qidian.com/BookReader/)(\\d+),(\\d+).aspx","gmi");
reg3.test("http://www.qidian.com/BookReader/1017141,20361055.aspx");
//获取三个分组
alert(RegExp.$1); 
alert(RegExp.$2);
alert(RegExp.$3);

2、 学习最常用的 test exec match search  replace  split 6个方法

1) test  检查指定的字符串是否存在
var data = “123123″;
var reCat = /123/gi;
alert(reCat.test(data));  //true
//检查字符是否存在  g 继续往下走  i 不区分大小写

2) exec 返回查询值
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /cat/i;
alert(reCat.exec(data));  //Cat

3)match  得到查询数组
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /cat/gi;
var arrMactches = data.match(reCat)
for (var i=0;i < arrMactches.length ; i++)
{
alert(arrMactches[i]);   //Cat  cat
}

4) search  返回搜索位置  类似于indexof
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /cat/gi;
alert(data.search(reCat));  //23

5) replace  替换字符  利用正则替换
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /cat/gi;
alert(data.replace(reCat,”libinqq”));

6)split   利用正则分割数组
var data = “123123,213,12312,312,3,Cat,cat,dsfsdfs,”;
var reCat = /\,/;
var arrdata = data.split(reCat);
for (var i = 0; i < arrdata.length; i++)
{
alert(arrdata[i]);
}
3、常用表达式收集:

"^\\d+$"

//非负整数(正整数 + 0)
"^[0-9]*[1-9][0-9]*$"

//正整数
"^((-\\d+)|(0+))$"

//非正整数(负整数 + 0)
"^-[0-9]*[1-9][0-9]*$"

//负整数
"^-?\\d+$"

//整数
"^\\d+(\\.\\d+)?$"

//非负浮点数(正浮点数 + 0)
"^(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*))$"
//正浮点数
"^((-\\d+(\\.\\d+)?)|(0+(\\.0+)?))$"

//非正浮点数(负浮点数 + 0)
"^(-(([0-9]+\\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\\.[0-9]+)|([0-9]*[1-9][0-9]*)))$"
//负浮点数
"^(-?\\d+)(\\.\\d+)?$"

//浮点数
"^[A-Za-z]+$"

//由26个英文字母组成的字符串
"^[A-Z]+$"

//由26个英文字母的大写组成的字符串
"^[a-z]+$"

//由26个英文字母的小写组成的字符串
"^[A-Za-z0-9]+$"

//由数字和26个英文字母组成的字符串
"^\\w+$"

//由数字、26个英文字母或者下划线组成的字符串
"^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$"

//email地址
"^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$"

//url
"^[A-Za-z0-9_]*$"。

正则表达式基础知识

^ 匹配一个输入或一行的开头,/^a/匹配"an A",而不匹配"An a"
$ 匹配一个输入或一行的结尾,/a$/匹配"An a",而不匹配"an A"
* 匹配前面元字符0次或多次,/ba*/将匹配b,ba,baa,baaa
+ 匹配前面元字符1次或多次,/ba+/将匹配ba,baa,baaa
? 匹配前面元字符0次或1次,/ba?/将匹配b,ba
(x) 匹配x保存x在名为$1...$9的变量中
x|y 匹配x或y
{n} 精确匹配n次
{n,} 匹配n次以上
{n,m} 匹配n-m次
[xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符)
[^xyz] 不匹配这个集合中的任何一个字符
[\b] 匹配一个退格符
\b 匹配一个单词的边界
\B 匹配一个单词的非边界
\cX 这儿,X是一个控制符,/\cM/匹配Ctrl-M
\d 匹配一个字数字符,/\d/ = /[0-9]/
\D 匹配一个非字数字符,/\D/ = /[^0-9]/
\n 匹配一个换行符
\r 匹配一个回车符
\s 匹配一个空白字符,包括\n,\r,\f,\t,\v等
\S 匹配一个非空白字符,等于/[^\n\f\r\t\v]/
\t 匹配一个制表符
\v 匹配一个重直制表符
\w 匹配一个可以组成单词的字符(alphanumeric,这是我的意译,含数字),包括下划线,如[\w]匹配"$5.98"中的5,等于[a-zA-Z0-9]
\W 匹配一个不可以组成单词的字符,如[\W]匹配"$5.98"中的$,等于[^a-zA-Z0-9]。

Javascript 相关文章推荐
jquery offset函数应用实例
Nov 14 Javascript
Jquery事件的连接使用示例
Jun 18 Javascript
解决jquery无法找到其他父级子集问题的方法
May 10 Javascript
ES6概念 ymbol.for()方法
Dec 25 Javascript
vue.js实现用户评论、登录、注册、及修改信息功能
May 30 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
Oct 22 Javascript
Vue利用History记录上一页面的数据方法实例
Nov 02 Javascript
详解如何用webpack4从零开始构建react开发环境
Jan 27 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
May 09 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
Sep 25 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
Jan 12 Javascript
原生js实现弹幕效果
Nov 29 Javascript
深入解析JavaScript中的立即执行函数
May 21 #Javascript
详解JavaScript中Hash Map映射结构的实现
May 21 #Javascript
简单掌握JavaScript中const声明常量与变量的用法
May 21 #Javascript
基于javascript实现表格的简单操作
May 21 #Javascript
javascript检测移动设备横竖屏
May 21 #Javascript
Ext JS框架中日期函数的用法及日期选择控件的实现
May 21 #Javascript
js+html5实现canvas绘制网页时钟的方法
May 21 #Javascript
You might like
PHP企业级应用之常见缓存技术篇
2011/01/27 PHP
php后门URL的防范
2013/11/12 PHP
PHP实现变色验证码实例
2014/01/06 PHP
简单的js分页脚本
2009/05/21 Javascript
浅谈Javascript 数组与字典
2015/01/29 Javascript
JS表格组件神器bootstrap table详解(基础版)
2015/12/08 Javascript
javascript特效实现——当前时间和倒计时效果的简单实例
2016/07/20 Javascript
js事件冒泡、事件捕获和阻止默认事件详解
2016/08/04 Javascript
Jquery实时监听input value的实例
2017/01/26 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
jQuery模拟下拉框选择对应菜单的内容
2017/03/07 Javascript
Js中async/await的执行顺序详解
2017/09/22 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
nodejs中express入门和基础知识点学习
2018/09/13 NodeJs
详解微信小程序-获取用户session_key,openid,unionid - 后端为nodejs
2019/04/29 NodeJs
vue keep-alive 动态删除组件缓存的例子
2019/11/04 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
Javascript实现关闭广告效果
2021/01/29 Javascript
50行代码实现贪吃蛇(具体思路及代码)
2013/04/27 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
浅谈python的dataframe与series的创建方法
2018/11/12 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
Python 获取ftp服务器文件时间的方法
2019/07/02 Python
django+tornado实现实时查看远程日志的方法
2019/08/12 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
英国名牌服装购物网站:OD’s Designer
2019/09/02 全球购物
土木工程专业大学毕业生求职信
2013/10/13 职场文书
销售行政专员职责
2014/01/03 职场文书
办理退休介绍信
2014/01/09 职场文书
小班幼儿评语大全
2014/04/30 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
终止劳动合同协议书
2014/10/05 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
如何判断pytorch是否支持GPU加速
2021/06/01 Python
Python中可变和不可变对象的深入讲解
2021/08/02 Python
MySQL连接控制插件介绍
2021/09/25 MySQL