我正在尝试匹配只有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);
}
当我输入有效字符串时,我仍然收到错误消息
答案 0 :(得分:4)
从正则表达式文字中删除引号:
var pattern = "/^[agct]+$/i";
要:
var pattern = /^[agct]+$/i;
存在隐式转换
<强>的regexp 强>
正则表达式对象。如果传递了非RegExp对象obj,则使用新的RegExp(obj)将其隐式转换为RegExp。
但它不起作用,因为你在模式和斜杠中有标记:/../
。
var pattern = "^[agct]+$";
... .match(pattern)
由于隐式转换可以正常工作,但由于缺少i
标记而区分大小写。
答案 1 :(得分: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);
}
您正在使用文字sting而不是正则表达式来处理模式,因此出现错误消息。