当前位置: 首页 > 知识库问答 >
问题:

如何在regex中忽略顺序?

全彬
2023-03-14

我正在使用一个regex来验证angular2应用程序中的一些内容:

Validators.pattern('\d*F{1}N{1}K?J?')

我只想允许数字(0-9)和字母F,N,K,J,K和J应该是可选的,F和N必须正好在里面一次。

有人知道吗,如何忽略字母和数字的顺序?不,它只是匹配,如果我完全按照以下顺序插入字符:012FNKJ。KJFN012根本不匹配。:(

共有1个答案

陈瀚
2023-03-14

以下是您的问题的纯regex答案(为了提高可读性,添加了空白):

^
(?=[^F]*F[^F]*$)
(?=[^N]*N[^N]*$)
(?=[^K]*K?[^K]*$)
(?=[^J]*J?[^J]*$)
[FNKJ\d]+$

说明:

  • 模式的四个(?=...)部分中的每一个都是lookahead。例如,他们说,“字符串必须包含任意数量的非ks,然后可能包含一个k,然后包含任意数量的非ks”。
  • regex的最后一部分表示“整个字符串必须只包含fnkj和数字”。

O(n)中,一些不使用regex解决此问题的伪代码:

function check_valid(string) {
  found_f = false
  found_n = false
  found_k = false
  found_j = false

  for(letter in string) {
    switch(letter) {
      case 'F':
        if(found_f) { return false }
        found_f = true
        break;
      case 'N':
        if(found_n) { return false }
        found_n = true
        break;
      case 'K':
        if(found_k) { return false }
        found_k = true
        break;
      case 'J':
        if(found_j) { return false }
        found_j = true
        break;
      case 0: case 1: case 2: case 3: case 4:
      case 5: case 6: case 7: case 8: case 9:
        break;
      default:
        return false; 
    }
  }

  return(found_f & found_n)
}
 类似资料:
  • 现在,如果我使用以下代码进行比较,我将在XMLUnit的帮助下相互比较两个xml文件 现在它给出了:预期的属性值'02',但是'01',但我不希望有差异,我希望表id是唯一的,如果在另一个文件中看到相同的表id,则只检查本例中的Main-Element:table->包含什么。

  • 问题内容: 我认为那应该是一个非常简单的问题。但是不知何故我无法在Google中找到答案。 假设我有2个字符串列表。第一个包含 “字符串A”和“字符串B” ,第二个包含 “字符串B”和“字符串A” (注意顺序不同)。我想用 JUnit 测试它们,以检查它们是否包含 完全相同的 字符串。 是否有任何断言可以检查忽略顺序的字符串是否相等?对于给定的示例org.junit.Assert.assertEq

  • 我需要比较使用自定义差异侦听器忽略子节点序列和属性列表序列的2个XML: 我的代码适用于: 我找到了一个临时的解决方案(8小时内不能在我自己的问题上添加评论): 我之前用:ElementNameAndAttributeQualifier重写了ElementQualifier,如果我将其更改为RecursiveElementNameAndTextQualifier,我可以得到我想要的结果 还可以使用

  • 问题内容: 我正在尝试为api 编写Web服务。因此,我编写了一个MyLogRecord类,该类继承自LogRecord。我用JAX- B注释对此类进行了注释,包括,因此它将忽略未注释的字段和属性。当我启动tomcat时,出现错误,并且其他类没有默认的构造函数,但是没有带注释的方法对Level类或任何其他类进行任何引用。这些由父类引用。 我的子类具有需要定义的所有内容。如何使JAX-B完全忽略父类

  • 我尝试比较两个文件并输出自定义字符串。以下是我的脚本。 当我执行脚本时,我得到: 奇怪的是当我输入< code>diff -q tmp ans.txt时 如何修复它(我不想看到行:“文件tmp和ans.txt不同”)?谢谢

  • 我在JMeter for REST Api中使用HTTP请求进行了大量测试,并使用JDBC请求进行了sql测试。现在的问题是,在每次测试中,第一个请求的响应时间甚至比其他请求高10倍。我知道这是由于JMeter需要建立与服务器或数据库的连接。当我使用更多线程时,例如200,每个线程中的第一个请求都存在这个问题。 JMeter中有什么好的解决方案可以在计算平均/偏差/吞吐量时忽略连接时间吗?