我有一个jquery代码修剪前导和尾随字符(从调用程序传递)。我在RegExp中使用一个变量用空格替换字符。如何使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
如何让正则表达式适用于任何角色?
答案 0 :(得分:2)
你需要转义元字符(如.
和其他几个)来获取文字。你可以通过在它们之前添加一个反斜杠来实现。
JS没有任何内置函数,所以你可以使用它:
function quotemeta(str){
return str.replace(/[.+*?|\\^$(){}\[\]-]/g, '\\$&');
}
像这样使用:
new RegExp("^(?:" + quotemeta(chr) + ")+|(?:" + quotemeta(chr) + ")+$" , "g");
答案 1 :(得分:0)
var chr= ':/';
...
var regex = new RegExp("(^[" + chr + "])|([" + chr+ "]$)" , "g");
答案 2 :(得分:0)
正则表达式应该这样: -
对于Colon,/^(\:)|(\:)$/gim
对于Dot,/^(\.)|(\.)$/gim
或强>
/^(\:|\w|\.)|(\:|\w|\.)$/gim
<强> LIVE DEMO 强>