Ruby 包含';或';管道匹配输入字符串中的管道

Ruby 包含';或';管道匹配输入字符串中的管道,ruby,regex,Ruby,Regex,作为验证方法的一部分,我需要确保输入字符串(称为“motif”)不包含某些字符(b、j、o、u、x、z) 这是我目前正在使用的: if motif.match(/[b|j|o|u|x|z]/) #check whether the motif contains only amino acid residues and not other junk. dead("The motif query must only contain the following characte

作为验证方法的一部分,我需要确保输入字符串(称为“motif”)不包含某些字符(b、j、o、u、x、z)

这是我目前正在使用的:

    if motif.match(/[b|j|o|u|x|z]/) #check whether the motif contains only amino acid residues and not other junk.
        dead("The motif query must only contain the following characters "ACDEFGHIKLMNPQRSTVWY").)
    end
如上面的脚本所示,如果motif包含这些字符,则会运行一个方法('dead'),从而停止脚本

问题是上面的正则表达式也与管道
|
匹配。这是一个问题,因为输入通常包含管道

e、 g

当调用motif=“RR | H..R”时,脚本将停止,因为正则表达式与管道匹配

我曾尝试使用
\
来转义管道,但这不起作用

任何帮助都将不胜感激

注意:这是ruby脚本的一部分。

您应该使用:

motif.match(/[bjouxz]/)
因为字符类管道内部是按字面意义处理的,即文字
|
而不是正则表达式或。

以下内容也适用(管道被视为正则表达式或正则表达式):


但是在这里使用字符类更好/更干净。

您也可以使用缩写来表示
匹配

motif[/[bjouxz]/]

请自便:在第二个示例中,正则表达式中不需要括号。@sawa:在第二个示例中,这是正确的,实际上不需要括号。Ismail M注意:您的混合语法违背了字符类
[]
表示法的目的
/[abc]/
/a | b | c/
的缩写。如果您使用的是
[]
,那么就不应该使用
|
。我认为正则表达式也应该不区分大小写。
motif[/[bjouxz]/]