Le nombre de correspondance Regex des caractères séparés par des caractères non correspondants

Je veux compter les caractères, mais ils peuvent être séparés par des caractères qui ne correspondent pas.

Voici un exemple. Je veux faire correspondre un texte comportant 10 mots ou plus. Cela peut inclure des espaces mais je ne veux pas compter les espaces.

Ne devrait pas correspondre: "foo bar baz" (devrait compter 9)
Ne devrait pas correspondre: "a a" (devrait compter 2)
Devrait correspondre: "foo baz bars" (devrait compter 10, correspondre à une chaîne entière)

C'est ce que j'ai proposé, mais ça compte tout:

((?<=\s)*\w(?=\s)*){10} 

Modifier Je ne veux pas inclure d'espaces pour compter. Désolé, je l'ai édité quelques fois, je ne l'ai pas décrite correctement.

Des idées à ce sujet?

Hé, je pense que cela serait simple mais utile:

 ( *?[0-9a-zA-Z] *?){10,} 

Briser le regex vers le bas:

  1. ( *? --------It can start with space(s)
  2. [0-9a-zA-Z] -Followed with the alphanumeric values
  3. *?) ---------It can end with space(s)
  4. {10,} -------Matches this pattern 10 or more times

Clé: Lorsque je regarde le compte pour regexes, cela s'applique au groupe, c'est-à-dire que les choses entre parenthèses " () ", ce cas, plusieurs espaces suivis de ONE des valeurs alphanumériques suivies d'espaces sont toujours comptés comme une seule correspondance. J'espère que cela aide. 🙂

Utilisez un groupe qui consomme des espaces avec chaque char de mot unique et comptez les groupes:

 ^(\s*\w){10,}\s*$ 

En utilisant JS: Supprimez les espaces, puis effectuez le contrôle \w

 'foo baz barz'.replace(/ /g,'').match(/\w{10,}/) != null //true 'foo bar baz'.replace(/ /g,'').match(/\w{10,}/) != null //false 

Composez les numéros de téléphone dans le texte:

 var test = 'something foo baz barz 07999-777-111 and 01234 567890 01234567890 some more'.match(/((\(?0\d{4}\)?[ -]?\d{3}[ -]?\d{3})|(\(?0\d{3}\)?[ -]?\d{3}[ -]?\d{4})|(\(?0\d{2}\)?[ -]?\d{4}[ -]?\d{4}))([ -]?\#(\d{4}|\d{3}))?/g); //result: ["07999-777-111", "01234 567890", "01234567890"]