Regex 正则表达式don';T考虑空间
我想在文本中找到n个连续的数字。我不能只允许空间,因为这会打破计数规则(n位数!)。最简单的方法是什么 我的意思是我不想这样做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*$ 或者如果只允许数字以外的空
\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*
\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太棒了!更新了我的答案。