JavaScript中正则的使用(1)
通过例子学习正则中的常见语法(1)
$num
javascript var a = 'javascript'; var b = a.replace(/(java)(script)/gi, '$2-$1'); console.log(b);//script-java
- 正则以
/
开始和结尾,中间为要匹配的表达式 g
表示全局搜索,i
表示忽略大小写,m
表示多行匹配$1
、$2
表示第1个和第2个子表达式(用小括号包裹)匹配到的文本,如例子所见,$1
为java
,$2
为script
- 正则以
$&
javascript var a = 'javascript'; var b = a.replace(/a/gi, '$&-$&'); console.log(b);//ja-ava-ascript
$&
表示匹配到的文本,即$&
匹配到a
- 将
javascript
中的a
替换为a-a
,所以最终结果为ja-ava-ascript
$`
javascript var a = 'javascript'; var b = a.replace(/(script)/gi, '$&-$`'); console.log(b);//javascript-java
$`
表示匹配到的文本的左侧文本,即$`
匹配到java
- 将
script
替换为script-java
,所以最终结果为javascript-java
$'
javascript var a = 'javascript'; var b = a.replace(/(java)/gi, '$&-$\''); console.log(b);//java-scriptscript
$'
表示匹配到的文本的右侧文本,即$'
匹配到script
- 将
java
替换为java-scripr
,所以结果为java-scriptscript
- 注意:
$&-$\'
,如果用'
包裹结果,需要\
转义,如果用"
包裹结果,则不需要转义
$$
javascript var a = 'javascript'; var b = a.replace(/a/gi, '$$'); console.log(b);//j$v$script
$$
表示对$
进行转义输出- 将
a
替换为$
replace
```javascript
var a = 'this is a javascript text';
var b = a.replace(/\b(\w)(\w*)\b/g, fn);
console.log(b);//This Is A Javascript Textfunction fn($1, $2, $3) {
return $2.toUpperCase() + $3;
}
``*
replace接受两个参数,第一个为正则表达式,第二个可以为文本,也可以为函数 *
\b表示单词的分界线 *
\w表示字母、数字、下划线或者汉字 *
fn中共接收了三个参数 *
$1表示整个正则表达式匹配到的文本,依次为
this,
is,
a,
javascript,
text*
$2表示第一个子表达式
(\w)匹配到的文本,分别为
t,
i,
a,
j,
t*
$3表示第二个子表达式
(\w*)匹配到的文本,分别为
his,
s,
(空的内容),
avascript,
ext*
$2.toUpperCase()将
$2匹配到的文本转换为大写 * 结果
This Is A Javascript Text`
replace
后fn
详细内容
javascript var a = 'this is a javascript text'; var b = a.replace(/\b(\w)(\w*)\b/g, fn); console.log(b); //this-t-his-0-this is a javascript text& is-i-s-5-this is a javascript text& a-a--8-this is a javascript text& javascript-j-avascript-10-this is a javascript text& text-t-ext-21-this is a javascript text& function fn($1, $2, $3, $4, $5) { return $1 + '-' + $2 + '-' + $3 + '-' + $4 + '-' + $5 + '&'; }
- 在例子6中介绍了
$1
,$2
,$3
,其实$2
至$3
可以有多个,数量随正则中的子表达式变化,因为/\b(\w)(\w*)\b/
中只有两个子表达式,所以只有$2
和$3
fn
最后两个参数(不一定是$4
和$5
),分别表示正则匹配到的文本($1
)开始位置(如匹配到javascript
,$4
就是javascript
在整段文本中的开始位置10)和整个要匹配的文本(this is a javascript text
)- 根据以上分析,结果如下
- 在例子6中介绍了
JavaScript中正则的使用(1)的更多相关文章
- JavaScript中正则使用
字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在.比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦, ...
- JavaScript 中正则匹配时结果不一致的问题
创建示例项目 考察如下场景,我们有个输入框组件,输入时同时进行校验. interface IInputProps { label: string; } function Input({ label } ...
- JavaScript 中 正则替换 replace
本文初步介绍 replace 在 js 中,我们常常会遇到 用来 解决开发中常会遇到的 问题的 知识总结, 如果你已经 非常熟悉,又可以绕道了. 定义和用法 replace() 方法用于在字符串中常用 ...
- javascript中正则动态替换为对象中的相应数据
使用正则进行替换以下内容 var str = 'aKey={aValue}&bKey={bValue}' 使用以下对象数据,替换value var obj = { aValue: 1, bVa ...
- javascript中正则实现读取当前url中指定参数值方法。
getQueryString:function(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*) ...
- Javascript中正则的 match、test、exec使用方法和区别
总结: match 是str调用 test和exec是正则表达式调用 test只返回true或false, exec和match的结果是相同的,返回结果比较复杂
- JS中正则匹配的三个方法match exec test的用法
javascript中正则匹配有3个方法,match,exec,test: match是字符串的一个方法,接收一个RegExp对象做为参数: match() 方法可在字符串内检索指定的值,或找到一个或 ...
- JavaScript与PHP中正则
一.JavaScript 有个在线调试正则的工具,点击查看工具.下面的所有示例代码,都可以在codepen上查看到. 1.创建正则表达式 var re = /ab+c/; //方式一 正则表达式字面量 ...
- JavaScript正则表达式详解(二)JavaScript中正则表达式函数详解
二.JavaScript中正则表达式函数详解(exec, test, match, replace, search, split) 1.使用正则表达式的方法去匹配查找字符串 1.1. exec方法详解 ...
随机推荐
- CALayer属性:position和anchorPoint
一.position和anchorPoint 1.简单介绍 CALayer有2个非常重要的属性:position和anchorPoint @property CGPoint position; 用来设 ...
- windows安装filebeat服务报错
cmd进入filebeat目录下 用以下命令执行: PowerShell.exe -ExecutionPolicy UnRestricted -File .\install-service-fil ...
- python学习笔记3-函数,判断负小数
一.函数 def hello(file_name,content): #形参file_name content f=open(file_name,'a+') f.seek(0) f.write(con ...
- R5—字符串处理/正则表达式
R通常被用来进行数值计算比较多,字符串处理相对较少,而且关于字符串的函数也不多,用得多的就是substr.strsplit.paste.regexpr这几个了.实际上R关于字符串处理的功能是非常强大的 ...
- linux tar 解压出错
今天用tar -xzvf php-7.2.3.tar.gz 解压php的tar包时报错 [root@VM_72_37_centos ~]# tar -xzvf php-.tar.gz gzip: st ...
- Node程序debug小记
有时候,所见并不是所得,有些包,你需要去翻他的源码才知道为什么会这样. 背景 今天调试一个程序,用到了一个很久之前的NPM包,名为formstream,用来将form表单数据转换为流的形式进行接口调用 ...
- PHP简单爬虫 基于QueryList采集库 和 ezsql数据库操作类
QueryList是一个基于phpQuery的PHP通用列表采集类,得益于phpQuery,让使用QueryList几乎没有任何学习成本,只要会CSS3选择器就可以轻松使用QueryList了,它让P ...
- 20165230 2017-2018-2 《Java程序设计》第9周学习总结
20165230 2017-2018-2 <Java程序设计>第9周学习总结 教材学习内容总结 第十二章 java网络编程 学习了用于网络编程的类,了解URL.Socket.InetAdd ...
- Java NIO 之 Channel(通道)
历史回顾: Java NIO 概览 Java NIO 之 Buffer(缓冲区) 其他高赞文章: 面试中关于Redis的问题看这篇就够了 一文轻松搞懂redis集群原理及搭建与使用 一 Channel ...
- Word Ladder I & II
Word Ladder I Given two words (start and end), and a dictionary, find the length of shortest transfo ...