正则表达式:字符串中的最小总位数

regex : minimum total number of digits in a string

我想知道本质上类似于密码的字符串中有多少位数字。

现在我有这个正则表达式:

^(?=.*[0-9]{3,})([a-zA-Z0-9_/+*.-]{6,})$

当它们是连续的 3 个数字时效果很好,但当它们在整个字符串中分开时效果不佳。

我需要知道字符串中是否有 3 位数字:

h123dasd 1hkh/23jd 1gvbn/*2fefse-

我能做什么?

您可以使用这个正则表达式:

/^(?=(?:\D*\d){3,})[a-zA-Z0-9_/+*.-]{6,}$/

这将强制您输入的 3 位数字可能连续也可能不连续。

RegEx Demo

不需要如此复杂的正则表达式 IMO - 只需从字符串中提取数字,连接匹配项,然后检查长度。类似于:

str.match(/\d+/g).reduce((p, c) => p + c).length > 3;

DEMO