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 相关文章推荐
JavaScript中json对象和string对象之间相互转化
Dec 26 Javascript
使用js写的一个简易的投票
Nov 27 Javascript
用js格式化金额可设置保留的小数位数
May 09 Javascript
jQuery插件EasyUI校验规则 validatebox验证框
Nov 29 Javascript
原生JS查找元素的方法(推荐)
Nov 22 Javascript
JS传播事件、取消事件默认行为、阻止事件传播详解
Aug 14 Javascript
weex slider实现滑动底部导航功能
Aug 28 Javascript
node.js微信小程序配置消息推送的实现
Feb 13 Javascript
JavaScript实现模态对话框实例
Jan 13 Javascript
使用JavaScript获取Django模板指定键值数据
May 27 Javascript
vue实现多个echarts根据屏幕大小变化而变化实例
Jul 19 Javascript
js实现表格单列按字母排序
Aug 12 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下用rmdir实现删除目录的三种方法小结
2008/04/20 PHP
php array_search() 函数使用
2010/04/13 PHP
PHP面向接口编程 耦合设计模式 简单范例
2011/03/23 PHP
php 数据库字段复用的基本原理与示例
2011/07/22 PHP
PHP通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
深入PHP数据缓存的使用说明
2013/05/10 PHP
Zend Framework生成验证码并实现验证码验证功能(附demo源码下载)
2016/03/22 PHP
ecshop适应在PHP7的修改方法解决报错的实现
2016/11/01 PHP
thinkphp5使html5实现动态跳转的例子
2019/10/16 PHP
php 使用html5 XHR2实现上传文件与进度显示功能示例
2020/03/03 PHP
Nigma vs Liquid BO3 第二场2.13
2021/03/10 DOTA
js二维数组定义和初始化的三种方法总结
2014/03/03 Javascript
jQuery时间轴插件使用详解
2015/07/16 Javascript
jquery实现点击向下展开菜单项(伸缩导航)效果
2015/08/22 Javascript
深入理解jQuery layui分页控件的使用
2016/08/17 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
浅析webpack 如何优雅的使用tree-shaking(摇树优化)
2017/08/16 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
微信小程序自定义导航教程(兼容各种手机)
2018/12/12 Javascript
JavaScript实现图片轮播特效
2019/10/23 Javascript
axios解决高并发的方法:axios.all()与axios.spread()的操作
2020/11/09 Javascript
用Python程序抓取网页的HTML信息的一个小实例
2015/05/02 Python
合并百度影音的离线数据( with python 2.3)
2015/08/04 Python
10个Python小技巧你值得拥有
2018/09/29 Python
新年快乐! python实现绚烂的烟花绽放效果
2019/01/30 Python
在Python文件中指定Python解释器的方法
2019/02/18 Python
python读取并写入mat文件的方法
2019/07/12 Python
解决c++调用python中文乱码问题
2020/07/29 Python
Python的logging模块基本用法
2020/12/24 Python
俄罗斯和世界各地的酒店预订:Hotels.com俄罗斯
2016/08/19 全球购物
打造经典复古风格的品牌:Alice + Olivia(爱丽丝+奥利维亚)
2016/09/07 全球购物
房屋租赁委托书范本
2014/10/04 职场文书
小学生作文批改评语
2014/12/25 职场文书
工作岗位职责范本
2015/02/15 职场文书
公司财务管理制度
2015/08/04 职场文书
学习经验交流会总结
2015/11/02 职场文书