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 正则查找与替换的更多相关文章

  1. visual studio 使用正则查找或替换示例

    visual studio 使用正则查找或替换示例 注意哟:使用之前应做好备份 visual studio 2015: 多行替换 (.*)point\ =(.*);\r\n.+this.([A-Za- ...

  2. frontpage 正则 查找与替换

    frontpage正则查找替换 frontpage查找用{}[不是() ]来匹配pattern, 并获取这一匹配 替换时匹配的字符用\1 \2 \3表示 第 N 个标记表达式 \N 在“替换”表达式中 ...

  3. Notepad 列编辑、正则查找、替换

    目标: 将源数据转成初始化sql语句.源数据: 104110040018,1,中国银行,中国银行天津琼州道支行,NULL,1100,天津市,12,天津市 104110040059,1,中国银行,中国银 ...

  4. golang 常用的正则查找与替换

    package main; import ( "regexp" "fmt" "strings" ) func main() { //1.过正 ...

  5. 一个JS正则的字符串替换函数

    直接上函数吧  不废话 function replacestring(oldstr,newstr,text) { var exp = new RegExp(oldstr,'g'); var c=tex ...

  6. 撸一个JS正则小工具

    写完正则在浏览器上检测自己写得对不对实在是不方便,于是就撸了一个JS正则小demo出来. demo demo展示 项目地址 代码部分 首先把布局样式先写好. <!DOCTYPE html> ...

  7. JS利用正则配合replace替换指定字符

    替换指定字符的方法有很多,在本文为大家详细介绍下,JS利用正则配合replace是如何做到的,喜欢的朋友可以参考下 定义和用法 replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一 ...

  8. JS实现文本中查找并替换字符

    JS实现文本中查找并替换字符 效果图: 代码如下,复制即可使用: <!DOCTYPE html><html> <head> <style type=" ...

  9. Node.js中针对中文的查找和替换无效的解决方法

    Node.js中针对中文的查找和替换无效的解决方法.   //tags的值: tag,测试,帖子 var pos1 = tags.indexOf("测"); //这里返回-1 ta ...

随机推荐

  1. 每日命令:(1)ls

    ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...

  2. PAT 1134 Vertex Cover

    A vertex cover of a graph is a set of vertices such that each edge of the graph is incident to at le ...

  3. MSSQL获取指定日期的SQL语句

    --1.一个月第一天的 SELECT DATEADD(mm,DATEDIFF(mm,0,getdate()),0) --2.本周的星期一 SELECT DATEADD(wk,DATEDIFF(wk,0 ...

  4. nyoj 95 众数问题(set)

    众数问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:3   描述 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的成为该元素的重数, 多重集合S重 ...

  5. Minimal string 栈 贪心

    time limit per test 1 second memory limit per test 256 megabytes input standard input output standar ...

  6. - > 动规讲解基础讲解七——最长单增子序列

    (LIS Longest Increasing Subsequence)给定一个数列,从中删掉任意若干项剩余的序列叫做它的一个子序列,求它的最长的子序列,满足子序列中的元素是单调递增的. 例如给定序列 ...

  7. Bootstrap基础教程:tutorialspoint-bootstrap

    来自turorialspoint的Boostrap基础教程(英文),官网:https://www.tutorialspoint.com/bootstrap/index.htm 中文版:https:// ...

  8. oracle 12c show con_name

    今天安装了一个oracle 12c的数据库做测试,在运行一个很简单的命令时出错了: SQL> show con_name concat "." (hex 2e) SP2: u ...

  9. css3 和 html5 笔记

    1.css3 ie下大部分不兼容 ie9以下 浏览器低版本不兼容 需要写 -webket-transition:1s -moz-transition: 1s -o-transition:1s tran ...

  10. socket短连接、长连接

    通常短连接是这样:连接->传输数据->关闭连接那什么是长连接?一般长连接相对短连接而言的,长连接在传输结束后不关闭连接,而不断的发送包保持连接等待处理下一个数据包. 一般长连接用于少数cl ...