私信  •  关注

Qtax Gracenotes

Qtax Gracenotes 最近创建的主题
Qtax Gracenotes 最近回复了
13 年前
回复了 Qtax Gracenotes 创建的主题 » regex使用验证器传递变量值并验证jquery[duplicate]

正如Eric Wendelin提到的,你可以这样做:

str1 = "pattern"
var re = new RegExp(str1, "g");
"pattern matching .".replace(re, "regex");

这个产量 "regex matching ." . 但是,如果str1是 "." . 你会希望结果是 "pattern matching regex" ,将句点替换为 "regex" ,但结果会是……

regexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregexregex

这是因为,尽管 “。” 是字符串,在regexp构造函数中,它仍然被解释为正则表达式,表示任何非换行字符,表示字符串中的每个字符。为此,以下功能可能有用:

 RegExp.quote = function(str) {
     return str.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1");
 };

然后你可以:

str1 = "."
var re = new RegExp(RegExp.quote(str1), "g");
"pattern matching .".replace(re, "regex");

顺从的 “模式匹配正则表达式” .