gpt4 book ai didi

javascript - 使用 jquery 变量替换点、冒号或任何其他字符的通用正则表达式

转载 作者:行者123 更新时间:2023-11-30 18:31:02 25 4
gpt4 key购买 nike

我有一个 jquery 代码可以 trim 前导和尾随字符(从调用程序传递)。我在 RegExp 中使用变量将字符替换为空白。我怎样才能使正则表达式适用于从调用程序传递的任何字符?这是简化的代码:

var time = ":1h:45m:34s:";
var chr= ':'; //can have . or , or any other character
var regex = new RegExp("(^" + chr + ")|(" + chr+ "$)" , "g"); //works for colon but not for dot.
//var regex = new RegExp("(^/" + chr + ")|(/" + chr+ "$)" , "g"); //for dot I added / but not for colon.
var formattedtime = time.replace(regex, "");

预期产出:

1. time = ":1h:45m:34s:"; 
chr = ":";
Output: 1h:45m:34s
2. time = "1h:45m:34s";
chr = ":";
Output: 1h:45m:34s
3. time = ".45m.34s";
chr = ".";
Output: 45m.34s
4. time = "1h.45m.34s.";
chr = ".";
Output: 1h.45m.34s

如何使正则表达式适用于任何字符?

最佳答案

您需要转义元字符(如 . 和其他几个字符)以获得文字。您可以通过在它们之前添加一个反斜杠来做到这一点。

JS 没有任何内置函数,所以你可以使用这个:

function quotemeta(str){
return str.replace(/[.+*?|\\^$(){}\[\]-]/g, '\\$&');
}

这样使用:

new RegExp("^(?:" + quotemeta(chr) + ")+|(?:" + quotemeta(chr) + ")+$" , "g");

关于javascript - 使用 jquery 变量替换点、冒号或任何其他字符的通用正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9620131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com