匹配模式不起作用

match pattern not working

本文关键字:不起作用 模式      更新时间:2023-09-26

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

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

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

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

自:

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

有一个隐式转换

正则表达式

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

多核

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

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

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

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

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);
}

您正在使用文字刺痛而不是正则表达式作为模式,因此出现错误消息。