Regex 行的正则表达式查询

Regex 行的正则表达式查询,regex,Regex,我正在尝试找出以下情况的两个正则表达式: 长度可被n整除,但整数n和m不能被m整除的线 不包含给定字符的特定数字n的行, 但可能包含更多或更少 我是一个新来者,希望能对这些问题做出澄清 我在示例中使用了JavaScript 对于第一个问题,关键是要注意“倍数”只是重复。因此,使用/(…)+/将匹配3个字符,然后尽可能多次重复该匹配。每个匹配组不需要是相同的3个字符集,但它们必须是连续的。使用^和$进行适当的锚定可确保您检查的是准确的字符串长度,?:可用于求反 e、 g.5(而非3)的倍数:

我正在尝试找出以下情况的两个正则表达式:

  • 长度可被n整除,但整数n和m不能被m整除的线
  • 不包含给定字符的特定数字n的行,
    但可能包含更多或更少

我是一个新来者,希望能对这些问题做出澄清

我在示例中使用了JavaScript

对于第一个问题,关键是要注意“倍数”只是重复。因此,使用
/(…)+/
将匹配3个字符,然后尽可能多次重复该匹配。每个匹配组不需要是相同的3个字符集,但它们必须是连续的。使用
^
$
进行适当的锚定可确保您检查的是准确的字符串长度,
?:
可用于求反

e、 g.5(而非3)的倍数:

/^(?!(.{3})+$)(.{5})+$/gm
请注意,JavaScript使用
/
标记表达式的开头和结尾,
gm
是执行全局多行匹配的修饰符。我不清楚匹配“行”是什么意思,所以我假设字符串本身包含必须考虑的换行符。如果你有,比方说,和一系列的行,并且可以单独检查每一行,那么事情会变得稍微容易一些,或者在你的第二个问题中会容易得多

第一个问题的演示:

var chars='123456789001234567890',
str='';

对于(var i=1;我请,发布一个模式或字符串,然后您想要匹配,以及您迄今为止为实现目标所做的努力。第一个要点可能不适用于正则表达式,因为它不能(AFAIK)计算字符数。第二个可能需要某种查找。您知道如何执行第一个表达式的第一部分,即匹配长度为n的倍数的字符串吗?是的,它将是(例如,对于字符X)(?:X{2}).然而,这并不排除m可整除的情况。对于第二点,我尝试了类似(\d{4,})|(\d{0,2})的方法,其中它从0-2开始,然后从4开始,但它似乎也不起作用。你知道如何否定匹配,例如匹配任何不是字母“a”的字符串吗重复?是的,你的解释是有道理的。谢谢!但是,你的第二个正则表达式似乎对我不起作用。例如,为了排除带有3个“a”实例的行,正则表达式应该是:^([^a\3]*(a[^a\3]*){0,(3-1)}[^a\3]*[^a\3]*(a[^a\3]*){(3+1),}[^a\3]*)$但是,这并没有检测到上面的那些行。@a命令不要将匹配新行的
\n
与变量
n
混淆。我试图使用与问题相同的变量名,但为了让我的答案更清楚,我将
n
更改为
m
。您似乎还编写了
3-1
,而不是
2de>和
3+1
而不是
4
。感谢您的澄清。因此,我将正则表达式更改为:^([^a\n]*(a[^a\n]*){0,2}[^a\n]*[^a\n]*(a[^a\n]*){4,}[^a\n]*)$它似乎在regexr.com以外的其他网站上也能正常工作