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中的parseInt使用技巧
Sep 03 Javascript
JavaScript代码复用模式实例分析
Dec 02 Javascript
javascript 中String.match()与RegExp.exec()的区别说明
Jan 10 Javascript
jquery toolbar与网页浮动工具条具体实现代码
Jan 12 Javascript
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
javascript中typeof操作符和constucor属性检测
Feb 26 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
Jun 17 Javascript
微信小程序 网络API发起请求详解
Nov 09 Javascript
基于js中this和event 的区别(详解)
Oct 24 Javascript
在axios中使用params传参的时候传入数组的方法
Sep 25 Javascript
微信小程序 高德地图路线规划实现过程详解
Aug 05 Javascript
用vite搭建vue3应用的实现方法
Feb 22 Vue.js
深入解析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
Linux系统递归生成目录中文件的md5的方法
2015/06/29 PHP
PHP框架Laravel学习心得体会
2015/10/28 PHP
PHP实现动态执行代码的方法
2016/03/25 PHP
PHP receiveMail实现收邮件功能
2018/04/25 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
PHP7 标准库修改
2021/03/09 PHP
jQuery+ajax实现顶一下,踩一下效果
2010/07/17 Javascript
Chrome Form多次提交表单问题的解决方法
2011/05/09 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
javascript实现多级联动下拉菜单的方法
2015/02/06 Javascript
jQuery实现的动态伸缩导航菜单实例
2015/05/07 Javascript
总结JavaScript的正则与其他语言的不同之处
2016/08/25 Javascript
ES6入门教程之Iterator与for...of循环详解
2017/05/17 Javascript
jquery.masonry瀑布流效果
2017/05/25 jQuery
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
2018/04/23 jQuery
js监听html页面的上下滚动事件方法
2018/09/11 Javascript
Vue项目中最新用到的一些实用小技巧
2018/11/06 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
Python中decorator使用实例
2015/04/14 Python
Python实现建立SSH连接的方法
2015/06/03 Python
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
Python生成器以及应用实例解析
2018/02/08 Python
python实现关闭第三方窗口的方法
2019/06/28 Python
python在新的图片窗口显示图片(图像)的方法
2019/07/11 Python
python json load json 数据后出现乱序的解决方案
2020/02/27 Python
彻底弄明白CSS3的Media Queries(跨平台设计)
2010/07/27 HTML / CSS
德国、奥地利和瑞士最大的旅行和度假门户网站:HolidayCheck
2019/11/14 全球购物
写一个在SQL Server创建表的SQL语句
2012/03/10 面试题
市场营销策划方案
2014/06/11 职场文书
敬老院标语
2014/06/27 职场文书
硕士生找工作求职信
2014/07/05 职场文书
刑事和解协议书范本
2014/11/19 职场文书
捐助倡议书
2015/01/19 职场文书
幼儿教师辞职信
2015/02/27 职场文书