JS 正则查找与替换
JS正则查找与替换
一、前提/背景
今天遇到个问题,需要替换字符串中部分字符,这些字符相对整个字符串而言,与其他子字符串类似,无法单独提出;重要的是,该字符串是动态的生成的,就像我们日常看到的网页Url一样,同一个页面,Url路径不总是相同,这时还需要有区别的判断。所以、这时最好的方式,就是使用JS正则表达式匹配各个部分,然后有由各个匹配的部分再组合上参数,替换原来的Url路径。至此、可解决目前我们讨论的问题。
贴出demo代码:
<script type="text/javascript" charset="utf-8">
function changeURI(value) {
let href = location.href;
let pattern = /^(.+\d+\/\d+\/\d+\/)(\d+)(\/?)(.*)/;
if (typeof value === "number") {
if (arguments.length === 2) {
href = href.replace(pattern, "$1" + value + "$3$4");
} else {
let result = pattern.exec(href)
if (result && result.length >= 3) {
href = href.replace(pattern, "$1" + (parseInt(result[2]) + value) + "$3$4");
}
}
} else {
let result = pattern.exec(href)
if (result && "" === result[3]) {
href = href.replace(pattern, "$1$2/" + value);
} else {
href = href.replace(pattern, "$1$2$3" + value);
}
}
$(location).prop("href", href);
}
</script>
以上、就是我们解决JS正则匹配、替换的代码,略有不足,欢迎指正。
JS 正则查找与替换的更多相关文章
- visual studio 使用正则查找或替换示例
visual studio 使用正则查找或替换示例 注意哟:使用之前应做好备份 visual studio 2015: 多行替换 (.*)point\ =(.*);\r\n.+this.([A-Za- ...
- frontpage 正则 查找与替换
frontpage正则查找替换 frontpage查找用{}[不是() ]来匹配pattern, 并获取这一匹配 替换时匹配的字符用\1 \2 \3表示 第 N 个标记表达式 \N 在“替换”表达式中 ...
- Notepad 列编辑、正则查找、替换
目标: 将源数据转成初始化sql语句.源数据: 104110040018,1,中国银行,中国银行天津琼州道支行,NULL,1100,天津市,12,天津市 104110040059,1,中国银行,中国银 ...
- golang 常用的正则查找与替换
package main; import ( "regexp" "fmt" "strings" ) func main() { //1.过正 ...
- 一个JS正则的字符串替换函数
直接上函数吧 不废话 function replacestring(oldstr,newstr,text) { var exp = new RegExp(oldstr,'g'); var c=tex ...
- 撸一个JS正则小工具
写完正则在浏览器上检测自己写得对不对实在是不方便,于是就撸了一个JS正则小demo出来. demo demo展示 项目地址 代码部分 首先把布局样式先写好. <!DOCTYPE html> ...
- JS利用正则配合replace替换指定字符
替换指定字符的方法有很多,在本文为大家详细介绍下,JS利用正则配合replace是如何做到的,喜欢的朋友可以参考下 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一 ...
- JS实现文本中查找并替换字符
JS实现文本中查找并替换字符 效果图: 代码如下,复制即可使用: <!DOCTYPE html><html> <head> <style type=" ...
- Node.js中针对中文的查找和替换无效的解决方法
Node.js中针对中文的查找和替换无效的解决方法. //tags的值: tag,测试,帖子 var pos1 = tags.indexOf("测"); //这里返回-1 ta ...
随机推荐
- Hadoop Mapreduce 中的FileInputFormat类的文件切分算法和host选择算法
文件切分算法 文件切分算法主要用于确定InputSplit的个数以及每个InputSplit对应的数据段. FileInputFormat以文件为单位切分成InputSplit.对于每个文件,由以下三 ...
- CCF201503-2 数字排序 java(100分)
试题编号: 201503-2 试题名称: 数字排序 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 给定n个整数,请统计出每个整数出现的次数,按出现次数从多到少的顺序输出. 输 ...
- unigui+fastreport 打印【4】
1.建立一个uniForm,用于建立FastReport打印界面.在Form上增加uniFrame.和传统的的报表打印设计一样一样的. 2.在beofeShow事情中: procedure TUniF ...
- 【Codeforces 159B】Matchmaker
[链接] 我是链接,点我呀:) [题意] 笔和笔盖 笔有颜色和直径 笔盖也有颜色和直径 笔盖和笔如果直径相等 那么称为good 如果笔盖和笔直径相等.颜色也相等,那么称为very good 问你怎样安 ...
- JavaSE 学习笔记之反射技术(二十四)
反射技术:其实就是动态加载一个指定的类,并获取该类中的所有的内容.而且将字节码文件封装成对象,并将字节码文件中的内容都封装成对象,这样便于操作这些成员.简单说:反射技术可以对一个类进行解剖. 反射的好 ...
- 最小生成树 E - QS Network
Sunny Cup 2003 - Preliminary Round April 20th, 12:00 - 17:00 Problem E: QS Network In the planet w-5 ...
- zoj——3557 How Many Sets II
How Many Sets II Time Limit: 2 Seconds Memory Limit: 65536 KB Given a set S = {1, 2, ..., n}, n ...
- 19、Java并发性和多线程-嵌套管程锁死
以下内容转自http://ifeve.com/nested-monitor-lockout/: 嵌套管程锁死类似于死锁, 下面是一个嵌套管程锁死的场景: 线程1获得A对象的锁. 线程1获得对象B的锁( ...
- Nginx 源码
http://blog.sina.com.cn/s/articlelist_1834459124_1_1.html http://tengine.taobao.org/book/ https://gi ...
- ubuntu 建立加密分區及其安全刪除
加密分區1: sudo apt-get install cryptsetup2: 用“磁盤實用工具“,建立新的分區 或者 格式化現有分區,且勾選“加密底層設備“,按提示設定密碼3:同時選擇加密條件:i ...