Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/451.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用于字符串组合和序列规则的正则表达式2_Javascript_Regex_Angular_Regular Language - Fatal编程技术网

Javascript 用于字符串组合和序列规则的正则表达式2

Javascript 用于字符串组合和序列规则的正则表达式2,javascript,regex,angular,regular-language,Javascript,Regex,Angular,Regular Language,有人能帮助我在验证器.pattern()中使用正则表达式吗 我需要以下场景的正则表达式:- DNA测序小组的研究人员需要储存新发现的序列。设计一个接受字符串的系统,评估其有效性。有效的DNA对由PA、NY、OH、WV表示,并封装其他有效对。序列可以是任意数量的对 有效对示例: 普诺维亚 纽约 沃夫 PPAA *Exmaple无效对: 爸爸-没有封装 NOH-N上没有匹配对 OONQHH-无效字符Q 这就是在python中实现它的方法。您可以将相同的逻辑移植到任何其他编程语言 from co

有人能帮助我在验证器.pattern()中使用正则表达式吗

我需要以下场景的正则表达式:-

DNA测序小组的研究人员需要储存新发现的序列。设计一个接受字符串的系统,评估其有效性。有效的DNA对由PA、NY、OH、WV表示,并封装其他有效对。序列可以是任意数量的对

有效对示例:

  • 普诺维亚
  • 纽约
  • 沃夫
  • PPAA
*Exmaple无效对:

  • 爸爸-没有封装

  • NOH-N上没有匹配对

  • OONQHH-无效字符Q


这就是在python中实现它的方法。您可以将相同的逻辑移植到任何其他编程语言

from collections import Counter

code_to_test = 'OONQHH'
valid_codes=['PA','NY','OH','WV']
valid_code_letters=['P','A','N','Y','O','H','W','V']
w,x,y = False,False,False

#test condition 1
alpha=list(code_to_test)
if set(alpha) <= set(valid_code_letters):
    w=True

#test condition 2,3
if len(code_to_test)%2==0:
    if len(code_to_test)==2:
        if code_to_test in valid_codes:
            x=True
    else:
        a = [code_to_test[i:i+2] for i in range(0, len(code_to_test), 2)]
        for q in a:
            if q in valid_codes:
                break
        else:
            x=True

#test condition 4
ccount = Counter(code_to_test)
if ccount['P']==ccount['A'] and ccount['N']==ccount['Y'] and ccount['O']==ccount['H'] and ccount['W']==ccount['V']:
    y=True

if w and x and y:
    print "VALID CODE"
else:
    print "INVALID CODE"
您必须检查4个条件:

  • 若要测试的代码字母是给定代码的子集或相等值 信件
  • 如果代码是偶数字母
  • 即使是信件,也是加密的
  • 如果加密代码是用有效代码构造的

  • 您正在描述的字符串类别称为,并且已知它不在正则表达式可以用来匹配的范围内。但是,如果将字符串限制为特定长度,则有一些正则表达式可用于该长度内与该模式匹配的所有字符串。例如:

    与长度小于等于2的模式匹配的所有字符串:
    (PA | NY | OH | WV)

    与长度不超过4的模式匹配的所有字符串:
    (P(PA | NY | OH | WV)A | N(PA | NY | OH | WV)Y | O(PA | NY | OH | WV)H | W(PA | NY | OH | WV)V)

    与长度小于等于6的模式匹配的所有字符串: (P)P(P(P(P)P(P(P(P)P(P(P(P)P(P(P)P(P(P)P(P)P(P(P)P(P(P)P(P(P(P)P(P(P)P(P)P(P)NY(P)Y(P(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y(P)Y)Y(P)Y(P)Y(P)Y(P)Y(P)Y)Y(P)Y)Y(P(帕(帕)尼(尼)尼州(O124)OH | OH | WV)一个非(帕(帕)尼(尼)尼(尼)尼(尼)尼(尼)尼(OH | WV)Y Y(尼)尼(尼)尼(尼)尼(O124)OH | WV)Y)Y(Y)Y(维维维维尼)Y(V)Y(V)Y(V)Y(V)Y)Y(V)Y(V)Y)Y(Y)Y(Y)Y(Y)Y(Y)Y)Y(V)Y(V)Y(V)Y(V)Y)Y(V)Y(V)Y)Y)Y(V)Y(Y)Y)Y(V)Y(Y)Y(Y)Y)Y(Y)Y)Y(Y(Y)O(Y)Y)O(Y(Y)Y)Y(Y哦| WV)H | W(PA | NY |哦| WV)V)

    如您所见,正则表达式的设计目的不是识别这种格式的模式。但是,如果您使用的是angular,则可以改为。考虑这个函数,它取一个字符串并根据它是否与模式匹配返回true或false:

    function isValidDNASequence(input){
      for(i=0, j=input.length-1; i<j; i++, j--){
        if(!(
          (input[i]==='P' && input[j]==='A') ||
          (input[i]==='N' && input[j]==='Y') ||
          (input[i]==='O' && input[j]==='H') ||
          (input[i]==='W' && input[j]==='V')
        ) || i === j) return false;
      }
      return true;
    }
    
    函数isValidDNASequence(输入){
    
    对于(i=0,j=输入,长度-1,I.和您的代码在哪里),在JavaScript中不可能用正则表达式来检查这种情况。更好的方法是在中间分割字符串,然后反转和翻译第二部分(p=> a,n=> y,o=> h,w=v)。,然后测试这两部分是否相等。用正则表达式实现这一点有点疯狂。但是如果你能用正则表达式解决它,那么就发布解决方案。
    function isValidDNASequence(input){
      for(i=0, j=input.length-1; i<j; i++, j--){
        if(!(
          (input[i]==='P' && input[j]==='A') ||
          (input[i]==='N' && input[j]==='Y') ||
          (input[i]==='O' && input[j]==='H') ||
          (input[i]==='W' && input[j]==='V')
        ) || i === j) return false;
      }
      return true;
    }