js正则替换replace中$1的用法以及常用正则

一、repalce定义

用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

1

2

3

4

5

stringObject.replace(regexp/substr,replacement);

 

参数一:必需,规定的字符串或者正则表达式

参数二:必需,一个字符串值。规定了替换文本或生成替换文本的函数。

!!!replacement 中的 $ 字符具有特定的含义。详情见W3C

  

二、有$1,$2...的例子

1

2

3

4

5

//把 "Doe, John" 转换为 "John Doe" 的形式:

var str = "Doe, John";

str.replace(/(\w+)\s*, \s*(\w+)/, "$2 $1");

 

说明:$1,$2上就是按顺序对应小括号里面的小正则 捕获到的内容。   

  

三,第二个参数是函数

1

2

3

4

5

6

7

8

9

10

11

12

把字符串中所有单词的首字母都转换为大写:

var str = 'aaa bbb ccc';

uw=str.replace(/\b\w+\b/g, function(word){

  return word.substring(0,1).toUpperCase()+word.substring(1);}

  );

说明:匹配一次就执行一次函数,匹配的内容作为参数

 

//把数字转成对应的汉子

var ary=["一","二","三","四","五","六"]

"123456".replace(/\d/g,function(val){

  return ary[val-1]

})

 

四、一个栗子,实现模板字符替换

1

2

3

4

5

6

var obj = {

    name:'leaf',

    age:20

}

var str = "我是{{name}},name是我的名字,我今年{{age}}岁";

//最终替换成"我是leaf,name是我的名字,我今年20岁"

实现:

1

2

3

function render(template, context) {

  return template.replace(/\{\{(.*?)\}\}/g, (match, key) => context[key.trim()]);

}

说明:

  1、.*? 非贪婪匹配模式

       2、每个匹配的这则组合执行一次函数

    

五、其他常用正则替换

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

//去除空格

String.prototype.Trim = function() {

return this.replace(/\s+/g, "");

}

  

//去除换行

function ClearBr(key) {

key = key.replace(/<\/?.+?>/g,"");

key = key.replace(/[\r\n]/g, "");

return key;

}

  

//去除左侧空格

function LTrim(str) {

return str.replace(/^\s*/g,"");

}

  

//去右空格

function RTrim(str) {

return str.replace(/\s*$/g,"");

}

  

//去掉字符串两端的空格

function trim(str) {

return str.replace(/(^\s*)|(\s*$)/g, "");

}

  

//去除字符串中间空格

function CTim(str) {

return str.replace(/\s/g,'');

}

  

//是否为由数字组成的字符串

function is_digitals(str) {

var reg=/^[0-9]*$/; //匹配整数

return reg.test(str);

}

//单词首字母大写
function uppperCase(str) {  
    return str.toLowerCase().replace(/( |^)[a-z]/g, (L) => L.toUpperCase());  
} 

  

六、其他

 正则匹配url:

 /^https?:\/\/(([a-zA-Z0-9_-])+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?[a-zA-Z0-9_-](\?)?)*)*$/i

   或者:

   (https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]

 

QT:

If you are using Qt5 then use QRegularExpression instead of QRegExp

instead of $1 you should use \1 (escaped so \\1)

### 使用 `replace` 方法配合正则表达式 在 JavaScript 中,`String.prototype.replace()` 方法用于在一个字符串中搜索指定模式并将其替换为新的子串或通过函数计算的结果。当第一个参数是一个正则表达式时,可以实现更复杂的匹配逻辑。 下面展示了一个简单的例子来说明如何利用正则表达式执行替换操作: ```javascript const str = "The rain in SPAIN stays mainly in the plain"; // 将所有的大写字母转换成小写,并在其前后加上括号 const result = str.replace(/[A-Z]/g, match => '(' + match.toLowerCase() + ')'); console.log(result); ``` 上述代码片段会输出 `"The r(a)in (i)n (s)p(ain) st(a)ys m(a)inely (i)n (t)he pl(a)in"`[^2]。这里使用了全局标志 (`g`) 来确保所有符合条件的地方都被处理到;而回调函数允许动态决定每一个匹配项应该如何被替代。 对于更加复杂的需求,比如只替换特定位置上的字符组合或者应用条件性的变化,则可以根据具体需求调整正则表达式的定义以及可能使用的替换模板或回调函数。 #### 替换特定模式的例子 假设有一个场景是要把日期格式从 `YYYY-MM-DD` 转换成 `DD/MM/YYYY` 的形式,可以通过如下方式完成: ```javascript function convertDateFormat(dateStr) { return dateStr.replace(/(\d{4})-(\d{2})-(\d{2})/, '$3/$2/$1'); } convertDateFormat('2023-09-15'); // 返回 "15/09/2023" ``` 在这个例子中,捕获组 `( )` 和反向引用 `$n` (其中 n 是捕获组编号)一起工作,使得原始字符串中的不同部分能够按照新顺序重新排列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值