2016-04-21 11 views
1

Ich versuche zu wissen, wie viele Ziffern gibt es in einer Zeichenfolge, die im Wesentlichen wie ein Kennwort ist.Regex: minimale Gesamtzahl der Ziffern in einer Zeichenfolge

Vorerst habe ich diese Regex:

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

Es funktioniert großartig, wenn ihre drei Ziffern in einer Reihe ist, aber nicht, wenn sie in der gesamten Zeichenfolge getrennt sind.

Ich muss wissen können, wenn es 3 Ziffer in Strings, wie sie ist:

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

Was kann ich tun?

+0

Werfen Sie einen Blick auf [diese Frage] (http://stackoverflow.com/questions/15341016/regex-to-check-for-at-least-3-characters). –

Antwort

3

können Sie diese Regex verwenden:

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

Diese drei Ziffern in Ihrer Eingabe erzwingen wird, die nicht aufeinander folgen oder nicht.

RegEx Demo

+1

Das ist clever und effizient – rock321987

+1

Thx viel dafür :) – rXp

0

Keine Notwendigkeit für eine solche komplizierte Regex IMO - nur Ziffern aus der Zeichenfolge extrahieren, Concat die Spiele, und dann die Länge überprüfen. Etwas wie:

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

DEMO

Verwandte Themen