当前位置: 首页 > 编程日记 > 正文

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

转自:http://www.blogjava.net/pingpang/archive/2012/08/12/385342.html

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");
console.log(rep);结果: http://www.qidian.com/BookReader/ShowBook.aspx?bookId=1017141&chapterId=20361055

//方式二 ,采用固定参数的回调函数

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]。

相关文章:

第二版地面站加入"参数列表"

1. 连接界面 2. 电子地图 3. 参数列表后续新加入功能&#xff1a;待加入…

Blender中的主程序纹理学习课程 Master Procedural Texturing in Blender

挖掘Blender不可思议的强大节点编辑器的无限潜力。 你会学到: 逐步构建高级和高度可定制的程序纹理。 将许多不同层次的细节结合成一个复杂而现实的结果。 从头开始构建高级程序纹理背后的思维过程。 使用组节点为您的材料创建超级方便的定制。 课程获取&#xff1a;Blender中…

适合win7的python版本_windows下多个python版本共存,如何在Windows7系统上安装最新的64位Python3.6.2...

windows下多个python版本共存&#xff0c;如何在Windows7系统上安装最新的64位Python3.6.2 1、官网下载python3.6.2 https://www.python.org/ftp/python/3.6.2/python-3.6.2-amd64.exe 2、安装&#xff0c;选择自定义安装&#xff0c;直接安装到D盘目录下方便查找&#xff0c;把…

day18——sql优化——绑定变量

SQL> create table t(id int);SQL> set timing onSQL> variable x number; (声明x变量)SQL> exec :x :8SQL> insert into t values(:x);SQL> select * from t;SQL> commit;SQL> declare2 i number;3 sqlstr varchar(2000);4 …

2022-2028年全球与中国人字拖市场研究及前瞻分析报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了全球与中国人字拖行业市场行业相关概述、全球与中国人字拖行业市场行业运行环境、分析了全球与…

【翻译】Ext JS 6 Beta发布

原文&#xff1a;Ext JS 6 Beta is Now Available 概述Ext JS 6的好处新的Ext JS功能和工具需要你的反馈意见概述 很高兴&#xff0c;Ext JS 6 beta版本现在发布了。该版本是为了让你、社区来测试和评估Ext JS 6工作进度的。这是协助创建最好的Ext JS发布版本的最好方式。 对于…

PX4编写msg文件

在msg文件夹下&#xff0c;创建一个msg文件&#xff0c;然后在&#xff23;MakkeLists.txt里面声明一下&#xff0c;然后在终端打开项目文件&#xff0c;&#xff26;irmware&#xff0c;输入指令&#xff1a;make px4_fmu-v5_default&#xff0c;编译即可在/home/xx/xxx/Firmw…

UE4风格化场景设计入门指南 Stylized Station – The Environment Artist’s Survival Kit

持续时间13h 1920X1080 .ts 包含项目文件 大小解压后&#xff1a;4.9G 语言&#xff1a;英语中文字幕&#xff08;人工校对&#xff09; 标题:风格化的车站——环境艺术家的生存工具包 信息: 环境艺术很难。 尤其是作为初学者&#xff0c;就像你自己一样。有大量的工作流程&am…

python如何调用文件_如何调用另一个python文件中的代码

原博文 2017-07-10 15:56 − 无论我们选择用何种语言进行程序设计时&#xff0c;都不可能只有一个文件&#xff08;除了“hello world”&#xff09;&#xff0c;通常情况下&#xff0c;我们都需要在一个文件中调用另外一个文件的函数呀数据等等&#xff0c;总之要操作其他文件…

C++中模块(Dll)对外暴露接口的方式

总结下C中模块(Dll)对外暴露接口的方式&#xff1a; (1)导出API函数的方式这种方式是Windows中调用DLL接口的最基本方式&#xff0c;GDI32.dll, User32.dll都是用这种方式对外暴露系统API的。这种方式的优点是导出函数没有语言限制&#xff0c;什么语言都能调用&#xff1b;缺点…

LVS详解及基于LVS实现web服务器负载均衡

前言LVS(Linux Virtual Server)Linux虚拟服务器&#xff0c;是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立&#xff0c;是中国国内最早出现的自由软件项目之一。通过LVS提供的负载均衡技术和Linux操作系统可实现一个高性能、高可用的服务器群集&#xff0c;从…

解决Ubuntu系统下git clone下载速度较慢的问题(亲测有效)

常见问题使用Git clone下载网速通常有十几kb&#xff0c;下载较慢&#xff0e; 使用以下指令即可解决&#xff1a; //这是我们要clone的&#xff0c;通常是github.com需要替换掉&#xff0c;就是在github.com后面加上.cnpmjs.org就可以了 git clone https://github.com/Hacker…

Revit结构2021专业人士的选择:从入门到专业

Revit结构2021专业人士的选择:从入门到专业 Revit Structure 2021 : 13th Floor Concrete Building 你会学到: Revit结构中的第13栋混凝土建筑 在Revit结构中启动新项目 创建级别的基本方法 创建关卡的技巧 在Revit结构2021中处理主要和次要问题 网格的绘制 直线和曲线网格 圆…

神奇的FireFox

今天开发的时候用FireFox,然后有个js总是不出效果,window.close,然后换个浏览器就完全没问题了,还有onkeydown->ruturn false 屏蔽按键,FireFox也不行........ 果然FireFox这么好用是有原因的... 推荐大家开发的时候还是用360极速,自用还是FireFox好一点.转载于:https://www…

python输出结果空格分割_python 输出列表元素实例(以空格/逗号为分隔符)

给定list,如何以空格/逗号等符号以分隔符输出呢&#xff1f; 一般的&#xff0c;简单的for循环可以打印出list的内容&#xff1a; l[1,2,3,4] for i in l: print(i) 输出结果一行一个元素&#xff1a; 1 2 3 4 若想得到以空格或逗号为分隔符的输出结果&#xff0c;代码可改为&a…

My deep learning reading list

My deep learning reading list 主要是顺着Bengio的PAMI review的文章找出来的。包括几本综述文章&#xff0c;将近100篇论文&#xff0c;各位山头们的Presentation。全部都可以在google上找到。BTW&#xff1a;由于我对视觉尤其是检测识别比较感兴趣&#xff0c;所以关于DL的应…

QT串口调试软件

QT串口调试软件软件主界面设置界面关于我们使用介绍软件主界面 本界面主要包括串口设置部分、数据接收部分、数据发送部分以及软件配置部分构成&#xff0c;软件主界面如图1所示。 在图1软件主界面中&#xff0c;位于左侧部分数据数据连接部分&#xff0c;主要功能是与无人机…

Unity提高工作效率的终极指南

本套课程指南通过关于如何更快、更智能地工作的最新技术&#xff0c;帮助Unity创作者节省时间并提高工作效率 你会学到: Unity的创建者节省了时间&#xff0c;提高了生产力。 关于如何更快地使用程序员和艺术家工具集的技巧&#xff0c;无论是个人还是团队。 Unity应该是一种快…

deepin tim(wine)无法安装_利用HyperV虚拟机,如何在Win10上安装Deepin国产操作系统?深度好文!...

随着老美对华为手机业务的封锁&#xff0c;在PC端的操作系统的未来也逐渐引起了人们的重视&#xff0c;一旦Windows停止向国内供应的话&#xff0c;对国内市场的冲击也是不小的。基于这个原因&#xff0c;国产操作系统也越来越频繁地进入大家的视野。在众多国产操作系统中&…

**使用 Git Hook 实现网站的自动部署

http://www.tuicool.com/articles/3QRB7jU 自动化能解放人类的双手&#xff0c;而且更重要的是&#xff0c;因为按照规定的流程来走&#xff0c;也减少了很多误操作的产生。不知道大家平时都是怎么样更新自己生产环境的代码的&#xff0c;FTP 覆盖旧文件、服务器定时任务去 bui…

Mavlink自定义协议

参照本人博客&#xff1a;博客直达 浏览密码&#xff1a;N414 这里不做描述&#xff0c;详细过程请移步本人博客

UE建筑可视化全局照明学习 Unreal Engine: Global Illumination for Arch. Visualization

虚幻引擎:建筑可视化的全局照明 你会学到: 使用轻量级地理信息引擎 聚焦胃肠计算 生成灯光贴图Uv 轻度烘焙 控制光反弹 使用环境遮挡 动画和地理信息 暴露 保存高分辨率图像 课程获取&#xff1a;UE建筑可视化全局照明学习-云桥网 时长:1h 30m |视频:. MP4&#xff0c;12807…

dbf如何导入oracle_「赵强老师」第一个Oracle的手工管理的备份和恢复

一、什么是手工管理的备份与恢复&#xff1f;尽管在Oracle中&#xff0c;已经有了RMAN的备份与恢复。但是作为Oracle备份恢复的一种方式&#xff0c;我们将在本文中通过一个例子来为大家介绍如何使用手工的方式来完成Oracle的备份与恢复。手工方式的本质是通过操作系统的cp命令…

大小端存储模式的理解和判断

在计算机系统中&#xff0c;存储是以字节为单位的&#xff0c;每个地址单元都对应着一个字节&#xff0c;一个字节8bit。在C语言中除了8bit的char之外&#xff0c;还有16bit的short型&#xff0c;32bit的long型&#xff08;要看具体的编译器&#xff09;。对于位数大于8位的处理…

汇编语言学习随笔

1.可执行文件中包含两部分内容&#xff1a; *程序&#xff08;从源程序中的汇编指令翻译过来的机器码&#xff09;和数据&#xff08;源程序中定义的数据&#xff09; *相关的描述信息&#xff08;比如程序有多大&#xff0c;占多少内存空间啊等等&#xff09; 2.segment和ends…

新装Ubuntu18.04系统配置PX4环境

1.安装QGC地面站系统&#xff1a;链接&#xff1a;https://docs.qgroundcontrol.com/master/en/getting_started/download_and_install.html 2.配置系统文件&#xff1a;下载PX4代码 -->打开代码 -->找到文件夹Tools文件 -->找到setup文件夹 -->找到ubuntu.sh文件&…

Blender程序性纹理学习教程大师班 Creative Shrimp – Procedural Texturing Blender Master Class

标题:创意虾-程序纹理Blender大师班 信息: 什么是程序纹理&#xff1f; 程序纹理将简单的数学转换为无限的真实感着色器&#xff0c;具有无限的多样性和分辨率。 超越看起来像一团像素特写的图像纹理&#xff0c;运用程序纹理的力量&#xff0c;清晰的细节和没有重复的模式。 你…

java 全局变量 内存不回收_Java的内存 - 内存回收

这篇承接上一篇 《Java的内存 - 内存模型》&#xff0c;分析内存回收相关的知识点。 垃圾回收包含两个步骤&#xff0c;①标记哪些内存是垃圾 ②回收内存。下面分别说这两个步骤有哪些算法&#xff1a;1. 垃圾标记1.1 引用计数算法没有哪一种 JVM 是使用「引用计数」作为垃圾回…

题目1000:计算a+b

题目描述&#xff1a;求整数a&#xff0c;b的和。 输入&#xff1a;测试案例有多行&#xff0c;每行为a&#xff0c;b的值。 输出&#xff1a;输出多行&#xff0c;对应ab的结果。 样例输入&#xff1a;1 2 4 5 6 9 样例输出&#xff1a;3 9 15 #include<iostream> using…

Mac下chrome的webapp hostadmin 快速切换host

首先是安装 app &#xff0c;https://chrome.google.com/webstore/detail/hostadmin-app/mfoaclfeiefiehgaojbmncmefhdnikeg Chrome把扩展的NPAPI 禁用了&#xff0c;所以做成APP没以前方便了&#xff0c;但是有总比没有好。 安装之后发现mac下选择host文件没法选&#xff0c;因…