【问题标题】:Is there a regex that will match a string that contains a non fixed width string?是否有一个正则表达式可以匹配包含非固定宽度字符串的字符串?
【发布时间】:2022-08-16 05:01:10
【问题描述】:

下面是两个示例字符串:

\'如果<Person>,出于任何原因不愿或无法服务,<next.Person> 应改为担任继任代理人。\'

\'如果<Person>,出于任何原因不愿或无法服务,<next.Person> 应改为担任继任代理人。\'

我希望匹配第二个,并且不是首先,&lt;&gt;\'s 内不能有空格。我已经尝试了几个answers on SO,因为&lt;&gt; 中的字符不是固定宽度,所以负向后看将不起作用。

&lt;&gt; 部分都不包含空格时(\\s 是特定于正则表达式的),我正在寻找一种与\'\'\'s 中的所有内容匹配的模式。如上面的示例所示,字符串内可以有多个&lt;&gt;\,并且字符串可以包含我希望排除的模式之外的几乎任何有效字符。

  • 如果您愿意稍微超越使用单个 RegExp...
  • 我看到你的字符串用单引号分隔 - 但是如果输入字符串包含撇号会发生什么终止字符串?
  • 我无法看到两个字符串之间的区别。
  • @Dai 不确定我是否可以超越单个正则表达式,但它可以提供替代方法。如果字符串包含撇号作为替代,双引号可用于包装字符串。
  • 也许是对&lt;&gt; 内部空间的负面展望? ^(?!.*&lt;[^&gt;]*\\s[^&gt;]*&gt;).*$

标签: javascript regex


【解决方案1】:

您可以使用

^(?:<[^\s<>]*>|[^<>])*$

请参阅regex demo

细节

  • ^ - 字符串开头
  • (?:&lt;[^\s&lt;&gt;]*&gt;|[^&lt;&gt;])* - 零次或多次出现
    • &lt;[^\s&lt;&gt;]*&gt; - 一个&lt;,除了&lt;&gt; 和空格之外的零个或多个字符,然后是&gt; 字符
    • | - 或
    • [^&lt;&gt;] - &lt;&gt; 以外的字符
  • $ - 字符串结束。

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 2016-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 2011-04-07
    • 2022-12-07
    • 2018-11-24
    • 1970-01-01
    相关资源
    最近更新 更多