Regex 正则表达式don';T考虑空间

Regex 正则表达式don';T考虑空间,regex,Regex,我想在文本中找到n个连续的数字。我不能只允许空间,因为这会打破计数规则(n位数!)。最简单的方法是什么 我的意思是我不想这样做 \d\s*\d\s*\d\s*。。。等我觉得有更好的办法 编辑:[\d\s]{n}不起作用,因为我需要n个数字而不是n个字符。这需要n个数字: ^\D*(\d\D*){n}\D*$ 或者如果只允许数字以外的空格: ^\D*(\d\D*){n}\D*$ ^ *(\d ){n} *$ 这需要n个数字: ^\D*(\d\D*){n}\D*$ 或者如果只允许数字以外的空

我想在文本中找到n个连续的数字。我不能只允许空间,因为这会打破计数规则(n位数!)。最简单的方法是什么

我的意思是我不想这样做
\d\s*\d\s*\d\s*
。。。等我觉得有更好的办法


编辑:
[\d\s]{n}
不起作用,因为我需要n个数字而不是n个字符。

这需要n个数字:

^\D*(\d\D*){n}\D*$
或者如果只允许数字以外的空格:

^\D*(\d\D*){n}\D*$
^ *(\d ){n} *$

这需要n个数字:

^\D*(\d\D*){n}\D*$
或者如果只允许数字以外的空格:

^\D*(\d\D*){n}\D*$
^ *(\d ){n} *$
这应该起作用:

/^\s*(?:\d\s*){n}$/

说明:

  • /^\s*..$
    将匹配可选以空格开头的字符串
  • (?:…){n}
    创建一个非捕获组,组中的所有内容都将被匹配
    n次
  • \d\s*
    将匹配单个数字,后面有可选的空格
这应该可以:

/^\s*(?:\d\s*){n}$/

说明:

  • /^\s*..$
    将匹配可选以空格开头的字符串
  • (?:…){n}
    创建一个非捕获组,组中的所有内容都将被匹配
    n次
  • \d\s*
    将匹配单个数字,后面有可选的空格

这对您有用吗<代码>[0-9]+规则是什么<代码>[\d\h]+
应该可以工作(取决于正则表达式的使用位置,以及是否允许使用制表符),尽管这不需要数字。。可能更安全的方法是
\d[\d\h]*
,这是一个数字,然后是任意数量的空格/制表符和数字。@DaanMeijer听起来模式需要匹配
n
数字(有或没有空格混合)。我假设这就是“n规则”的含义,不管有多少空格,你的意思是允许一个固定数量的数字?我会去掉所有空白,使用
字符串长度
is numeric
函数,您使用的是哪种语言。@您能给出有效和无效输入的具体示例吗?这对您有用吗<代码>[0-9]+规则是什么<代码>[\d\h]+应该可以工作(取决于正则表达式的使用位置,以及是否允许使用制表符),尽管这不需要数字。。可能更安全的方法是
\d[\d\h]*
,这是一个数字,然后是任意数量的空格/制表符和数字。@DaanMeijer听起来模式需要匹配
n
数字(有或没有空格混合)。我假设这就是“n规则”的含义,不管有多少空格,你的意思是允许一个固定数量的数字?我会去掉所有的空白,并使用
字符串长度
is numeric
函数,无论您使用哪种语言。@EralpB您能给出有效和无效输入的具体示例吗?请避免在请求和重复组结束时使用
\s*
,因为如果输入不正确,可能会导致指数回溯。下面是一个更好的选择:`/^\s*(?:\d\s*){n}$/@jwatkins太棒了!更新了我的答案。请避免在乞讨和重复组结束时使用
\s*
,因为如果输入不正确,可能会导致指数回溯。下面是一个更好的选择:`/^\s*(?:\d\s*){n}$/@jwatkins太棒了!更新了我的答案。