Regex match count of characters that are separated by non-matching characters

I want to count characters, but they may be separated by characters that do not match.

Here is an example. I want to match a text that has 10 or more word-characters. It may include spaces but i don't want to count the spaces.

Should not match: "foo bar baz" (should count 9)
Should not match: "a          a" (should count 2)
Should match: "foo baz bars" (should count 10, match whole string)

This is what i came up with, but it counts the whole thing:

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

Edit I do not want to include spaces for counting. Sorry I edited this a few times, I didn't describe it correctly.

Any ideas on this?

5

3 Answers

Hey I think this would a simple but working one:

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

Breaking the regex down:

  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

Key: When I look at the count for regexes, it applies to the group, i.e., the things in the brackets "()", this case, multiple spaces followed ONE from the alphanumeric values followed by spaces are still counted as one match. Hope it helps. :)

3

Use a group that consumes spaces with each single word char, and count the groups:

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

Using JS: Remove the spaces, then do the \w check

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

Match phone numbers in text:

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"] 
10

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like