in reply to REgular expression to check the string that allows "a","b" and "c" to occur only once in any order.

m/ (?=^[^a]*a[^a]*$) ## One a and no other a's (?=^[^b]*b[^b]*$) ## One b and no other b's (?=^[^c]*c[^c]*$) ## One c and no other c's ^.{3}$ ## Exactly three chars /x and print "$_: matched" for 'aaa'..'ccc';; abc: matched acb: matched bac: matched bca: matched cab: matched cba: matched

Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
"Science is about questioning the status quo. Questioning authority".
In the absence of evidence, opinion is indistinguishable from prejudice.
"Too many [] have been sedated by an oppressive environment of political correctness and risk aversion."
  • Comment on Re: REgular expression to check the string that allows "a","b" and "c" to occur only once in any order.
  • Download Code

Replies are listed 'Best First'.
Re^2: REgular expression to check the string that allows "a","b" and "c" to occur only once in any order.
by bart (Canon) on Dec 11, 2007 at 13:25 UTC
    This looks like overkill.

    If a string is required to contain all of an "a", a "b" and a "c" and its length is limited to 3, then it can only contain one of each.

    So this ought to suffice:

    /^(?=.*a)(?=.*b)(?=.*c).{3}\z/

    Of course, yours is the way to go if the length is not limited to 3.