1

我正在尝试匹配其中只有 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);
}

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

4

2 回答 2

4

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

var pattern = "/^[agct]+$/i";

到:

var pattern = /^[agct]+$/i;

有一个隐式转换

正则表达式

一个正则表达式对象。如果传递了一个非正则表达式对象 obj,它会通过使用 new RegExp(obj) 隐式转换为正则表达式。

MDN

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

var pattern = "^[agct]+$";
... .match(pattern)

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

于 2012-06-06T11:09:49.250 回答
1

假设您的输入文本被正确提取,其值的控制台日志可能有助于隔离问题,此代码应该可以工作:

if (!this.inputSeq.value.match(/^\s*[agct]+\s*$/i)) {
    this.errMsg = "Invalid input sequence -must contain only a,g,c or t"
    updateErrorBox(this.errMsg);
}

您使用的是文字字符串而不是模式的正则表达式,因此会出现错误消息。

于 2012-06-06T11:13:57.810 回答