匹配模式不起作用

Tom*_*Tom 1 javascript regex

我正在尝试匹配仅包含 a、g、c 或 t 的字符串(不敏感),因此字符串:“AAaaatCCCc”有效,而“catb”无效。这是我的功能:

var pattern = "/^[agct]+$/i";
if (!this.inputSeq.value.trim().match(pattern)){
    this.errMsg = "Invalid input sequence -must contain only a,g,c or t"
    updateErrorBox(this.errMsg);
}
Run Code Online (Sandbox Code Playgroud)

当我输入有效字符串时,我仍然收到错误消息

gdo*_*ica 5

从正则表达式中删除引号:

var pattern = "/^[agct]+$/i";
Run Code Online (Sandbox Code Playgroud)

到:

var pattern = /^[agct]+$/i;
Run Code Online (Sandbox Code Playgroud)

存在隐式转换

正则表达式

正则表达式对象。如果传递非 RegExp 对象 obj,则使用 new RegExp(obj) 将其隐式转换为 RegExp。

MDN

但它不起作用,因为模式和斜杠中有标志:/../

var pattern = "^[agct]+$";
... .match(pattern)
Run Code Online (Sandbox Code Playgroud)

由于隐式转换可以工作,但由于缺少i标志而区分大小写。