(linenum→info "unix/slp.c:2238")

glibc/2.7/posix/PCRE.tests

    1: # PCRE version 4.4 21-August-2003
    2: 
    3: # Tests taken from PCRE and modified to suit glibc regex.
    4: #
    5: # PCRE LICENCE
    6: # ------------
    7: #
    8: # PCRE is a library of functions to support regular expressions whose syntax
    9: # and semantics are as close as possible to those of the Perl 5 language.
   10: #
   11: # Written by: Philip Hazel <ph10@cam.ac.uk>
   12: #
   13: # University of Cambridge Computing Service,
   14: # Cambridge, England. Phone: +44 1223 334714.
   15: #
   16: # Copyright (c) 1997-2003 University of Cambridge
   17: #
   18: # Permission is granted to anyone to use this software for any purpose on any
   19: # computer system, and to redistribute it freely, subject to the following
   20: # restrictions:
   21: #
   22: # 1. This software is distributed in the hope that it will be useful,
   23: #    but WITHOUT ANY WARRANTY; without even the implied warranty of
   24: #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
   25: #
   26: # 2. The origin of this software must not be misrepresented, either by
   27: #    explicit claim or by omission. In practice, this means that if you use
   28: #    PCRE in software that you distribute to others, commercially or
   29: #    otherwise, you must put a sentence like this
   30: #
   31: #      Regular expression support is provided by the PCRE library package,
   32: #      which is open source software, written by Philip Hazel, and copyright
   33: #      by the University of Cambridge, England.
   34: #
   35: #    somewhere reasonably visible in your documentation and in any relevant
   36: #    files or online help data or similar. A reference to the ftp site for
   37: #    the source, that is, to
   38: #
   39: #      ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
   40: #
   41: #    should also be given in the documentation. However, this condition is not
   42: #    intended to apply to whole chains of software. If package A includes PCRE,
   43: #    it must acknowledge it, but if package B is software that includes package
   44: #    A, the condition is not imposed on package B (unless it uses PCRE
   45: #    independently).
   46: #
   47: # 3. Altered versions must be plainly marked as such, and must not be
   48: #    misrepresented as being the original software.
   49: #
   50: # 4. If PCRE is embedded in any software that is released under the GNU
   51: #   General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL),
   52: #   then the terms of that licence shall supersede any condition above with
   53: #   which it is incompatible.
   54: #
   55: # The documentation for PCRE, supplied in the "doc" directory, is distributed
   56: # under the same terms as the software itself.
   57: #
   58: # End
   59: #
   60: 
   61: /the quick brown fox/
   62:     the quick brown fox
   63:  0: the quick brown fox
   64:     The quick brown FOX
   65: No match
   66:     What do you know about the quick brown fox?
   67:  0: the quick brown fox
   68:     What do you know about THE QUICK BROWN FOX?
   69: No match
   70: 
   71: /The quick brown fox/i
   72:     the quick brown fox
   73:  0: the quick brown fox
   74:     The quick brown FOX
   75:  0: The quick brown FOX
   76:     What do you know about the quick brown fox?
   77:  0: the quick brown fox
   78:     What do you know about THE QUICK BROWN FOX?
   79:  0: THE QUICK BROWN FOX
   80: 
   81: /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
   82:     abxyzpqrrrabbxyyyypqAzz
   83:  0: abxyzpqrrrabbxyyyypqAzz
   84:     abxyzpqrrrabbxyyyypqAzz
   85:  0: abxyzpqrrrabbxyyyypqAzz
   86:     aabxyzpqrrrabbxyyyypqAzz
   87:  0: aabxyzpqrrrabbxyyyypqAzz
   88:     aaabxyzpqrrrabbxyyyypqAzz
   89:  0: aaabxyzpqrrrabbxyyyypqAzz
   90:     aaaabxyzpqrrrabbxyyyypqAzz
   91:  0: aaaabxyzpqrrrabbxyyyypqAzz
   92:     abcxyzpqrrrabbxyyyypqAzz
   93:  0: abcxyzpqrrrabbxyyyypqAzz
   94:     aabcxyzpqrrrabbxyyyypqAzz
   95:  0: aabcxyzpqrrrabbxyyyypqAzz
   96:     aaabcxyzpqrrrabbxyyyypAzz
   97:  0: aaabcxyzpqrrrabbxyyyypAzz
   98:     aaabcxyzpqrrrabbxyyyypqAzz
   99:  0: aaabcxyzpqrrrabbxyyyypqAzz
  100:     aaabcxyzpqrrrabbxyyyypqqAzz
  101:  0: aaabcxyzpqrrrabbxyyyypqqAzz
  102:     aaabcxyzpqrrrabbxyyyypqqqAzz
  103:  0: aaabcxyzpqrrrabbxyyyypqqqAzz
  104:     aaabcxyzpqrrrabbxyyyypqqqqAzz
  105:  0: aaabcxyzpqrrrabbxyyyypqqqqAzz
  106:     aaabcxyzpqrrrabbxyyyypqqqqqAzz
  107:  0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
  108:     aaabcxyzpqrrrabbxyyyypqqqqqqAzz
  109:  0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
  110:     aaaabcxyzpqrrrabbxyyyypqAzz
  111:  0: aaaabcxyzpqrrrabbxyyyypqAzz
  112:     abxyzzpqrrrabbxyyyypqAzz
  113:  0: abxyzzpqrrrabbxyyyypqAzz
  114:     aabxyzzzpqrrrabbxyyyypqAzz
  115:  0: aabxyzzzpqrrrabbxyyyypqAzz
  116:     aaabxyzzzzpqrrrabbxyyyypqAzz
  117:  0: aaabxyzzzzpqrrrabbxyyyypqAzz
  118:     aaaabxyzzzzpqrrrabbxyyyypqAzz
  119:  0: aaaabxyzzzzpqrrrabbxyyyypqAzz
  120:     abcxyzzpqrrrabbxyyyypqAzz
  121:  0: abcxyzzpqrrrabbxyyyypqAzz
  122:     aabcxyzzzpqrrrabbxyyyypqAzz
  123:  0: aabcxyzzzpqrrrabbxyyyypqAzz
  124:     aaabcxyzzzzpqrrrabbxyyyypqAzz
  125:  0: aaabcxyzzzzpqrrrabbxyyyypqAzz
  126:     aaaabcxyzzzzpqrrrabbxyyyypqAzz
  127:  0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
  128:     aaaabcxyzzzzpqrrrabbbxyyyypqAzz
  129:  0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
  130:     aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
  131:  0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
  132:     aaabcxyzpqrrrabbxyyyypABzz
  133:  0: aaabcxyzpqrrrabbxyyyypABzz
  134:     aaabcxyzpqrrrabbxyyyypABBzz
  135:  0: aaabcxyzpqrrrabbxyyyypABBzz
  136:     >>>aaabxyzpqrrrabbxyyyypqAzz
  137:  0: aaabxyzpqrrrabbxyyyypqAzz
  138:     >aaaabxyzpqrrrabbxyyyypqAzz
  139:  0: aaaabxyzpqrrrabbxyyyypqAzz
  140:     >>>>abcxyzpqrrrabbxyyyypqAzz
  141:  0: abcxyzpqrrrabbxyyyypqAzz
  142:     *** Failers
  143: No match
  144:     abxyzpqrrabbxyyyypqAzz
  145: No match
  146:     abxyzpqrrrrabbxyyyypqAzz
  147: No match
  148:     abxyzpqrrrabxyyyypqAzz
  149: No match
  150:     aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
  151: No match
  152:     aaaabcxyzzzzpqrrrabbbxyyypqAzz
  153: No match
  154:     aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
  155: No match
  156: 
  157: /^(abc){1,2}zz/
  158:     abczz
  159:  0: abczz
  160:  1: abc
  161:     abcabczz
  162:  0: abcabczz
  163:  1: abc
  164:     *** Failers
  165: No match
  166:     zz
  167: No match
  168:     abcabcabczz
  169: No match
  170:     >>abczz
  171: No match
  172: 
  173: /^(b+|a){1,2}c/
  174:     bc
  175:  0: bc
  176:  1: b
  177:     bbc
  178:  0: bbc
  179:  1: bb
  180:     bbbc
  181:  0: bbbc
  182:  1: bbb
  183:     bac
  184:  0: bac
  185:  1: a
  186:     bbac
  187:  0: bbac
  188:  1: a
  189:     aac
  190:  0: aac
  191:  1: a
  192:     abbbbbbbbbbbc
  193:  0: abbbbbbbbbbbc
  194:  1: bbbbbbbbbbb
  195:     bbbbbbbbbbbac
  196:  0: bbbbbbbbbbbac
  197:  1: a
  198:     *** Failers
  199: No match
  200:     aaac
  201: No match
  202:     abbbbbbbbbbbac
  203: No match
  204: 
  205: /^[]cde]/
  206:     ]thing
  207:  0: ]
  208:     cthing
  209:  0: c
  210:     dthing
  211:  0: d
  212:     ething
  213:  0: e
  214:     *** Failers
  215: No match
  216:     athing
  217: No match
  218:     fthing
  219: No match
  220: 
  221: /^[^]cde]/
  222:     athing
  223:  0: a
  224:     fthing
  225:  0: f
  226:     *** Failers
  227:  0: *
  228:     ]thing
  229: No match
  230:     cthing
  231: No match
  232:     dthing
  233: No match
  234:     ething
  235: No match
  236: 
  237: /^[0-9]+$/
  238:     0
  239:  0: 0
  240:     1
  241:  0: 1
  242:     2
  243:  0: 2
  244:     3
  245:  0: 3
  246:     4
  247:  0: 4
  248:     5
  249:  0: 5
  250:     6
  251:  0: 6
  252:     7
  253:  0: 7
  254:     8
  255:  0: 8
  256:     9
  257:  0: 9
  258:     10
  259:  0: 10
  260:     100
  261:  0: 100
  262:     *** Failers
  263: No match
  264:     abc
  265: No match
  266: 
  267: /^.*nter/
  268:     enter
  269:  0: enter
  270:     inter
  271:  0: inter
  272:     uponter
  273:  0: uponter
  274: 
  275: /^xxx[0-9]+$/
  276:     xxx0
  277:  0: xxx0
  278:     xxx1234
  279:  0: xxx1234
  280:     *** Failers
  281: No match
  282:     xxx
  283: No match
  284: 
  285: /^.+[0-9][0-9][0-9]$/
  286:     x123
  287:  0: x123
  288:     xx123
  289:  0: xx123
  290:     123456
  291:  0: 123456
  292:     *** Failers
  293: No match
  294:     123
  295: No match
  296:     x1234
  297:  0: x1234
  298: 
  299: /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
  300:     abc!pqr=apquxz.ixr.zzz.ac.uk
  301:  0: abc!pqr=apquxz.ixr.zzz.ac.uk
  302:  1: abc
  303:  2: pqr
  304:     *** Failers
  305: No match
  306:     !pqr=apquxz.ixr.zzz.ac.uk
  307: No match
  308:     abc!=apquxz.ixr.zzz.ac.uk
  309: No match
  310:     abc!pqr=apquxz:ixr.zzz.ac.uk
  311: No match
  312:     abc!pqr=apquxz.ixr.zzz.ac.ukk
  313: No match
  314: 
  315: /:/
  316:     Well, we need a colon: somewhere
  317:  0: :
  318:     *** Fail if we don't
  319: No match
  320: 
  321: /([0-9a-f:]+)$/i
  322:     0abc
  323:  0: 0abc
  324:  1: 0abc
  325:     abc
  326:  0: abc
  327:  1: abc
  328:     fed
  329:  0: fed
  330:  1: fed
  331:     E
  332:  0: E
  333:  1: E
  334:     ::
  335:  0: ::
  336:  1: ::
  337:     5f03:12C0::932e
  338:  0: 5f03:12C0::932e
  339:  1: 5f03:12C0::932e
  340:     fed def
  341:  0: def
  342:  1: def
  343:     Any old stuff
  344:  0: ff
  345:  1: ff
  346:     *** Failers
  347: No match
  348:     0zzz
  349: No match
  350:     gzzz
  351: No match
  352:     Any old rubbish
  353: No match
  354: 
  355: /^.*\.([0-9]{1,3})\.([0-9]{1,3})\.([0-9]{1,3})$/
  356:     .1.2.3
  357:  0: .1.2.3
  358:  1: 1
  359:  2: 2
  360:  3: 3
  361:     A.12.123.0
  362:  0: A.12.123.0
  363:  1: 12
  364:  2: 123
  365:  3: 0
  366:     *** Failers
  367: No match
  368:     .1.2.3333
  369: No match
  370:     1.2.3
  371: No match
  372:     1234.2.3
  373: No match
  374: 
  375: /^([0-9]+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
  376:     1 IN SOA non-sp1 non-sp2(
  377:  0: 1 IN SOA non-sp1 non-sp2(
  378:  1: 1
  379:  2: non-sp1
  380:  3: non-sp2
  381:     1    IN    SOA    non-sp1    non-sp2   (
  382:  0: 1    IN    SOA    non-sp1    non-sp2   (
  383:  1: 1
  384:  2: non-sp1
  385:  3: non-sp2
  386:     *** Failers
  387: No match
  388:     1IN SOA non-sp1 non-sp2(
  389: No match
  390: 
  391: /^[a-zA-Z0-9][a-zA-Z0-9-]*(\.[a-zA-Z0-9][a-zA-z0-9-]*)*\.$/
  392:     a.
  393:  0: a.
  394:     Z.
  395:  0: Z.
  396:     2.
  397:  0: 2.
  398:     ab-c.pq-r.
  399:  0: ab-c.pq-r.
  400:  1: .pq-r
  401:     sxk.zzz.ac.uk.
  402:  0: sxk.zzz.ac.uk.
  403:  1: .uk
  404:     x-.y-.
  405:  0: x-.y-.
  406:  1: .y-
  407:     *** Failers
  408: No match
  409:     -abc.peq.
  410: No match
  411: 
  412: /^\*\.[a-z]([a-z0-9-]*[a-z0-9]+)?(\.[a-z]([a-z0-9-]*[a-z0-9]+)?)*$/
  413:     *.a
  414:  0: *.a
  415:     *.b0-a
  416:  0: *.b0-a
  417:  1: 0-a
  418:     *.c3-b.c
  419:  0: *.c3-b.c
  420:  1: 3-b
  421:  2: .c
  422:     *.c-a.b-c
  423:  0: *.c-a.b-c
  424:  1: -a
  425:  2: .b-c
  426:  3: -c
  427:     *** Failers
  428: No match
  429:     *.0
  430: No match
  431:     *.a-
  432: No match
  433:     *.a-b.c-
  434: No match
  435:     *.c-a.0-c
  436: No match
  437: 
  438: /^[0-9a-f](\.[0-9a-f])*$/i
  439:     a.b.c.d
  440:  0: a.b.c.d
  441:  1: .d
  442:     A.B.C.D
  443:  0: A.B.C.D
  444:  1: .D
  445:     a.b.c.1.2.3.C
  446:  0: a.b.c.1.2.3.C
  447:  1: .C
  448: 
  449: /^".*"\s*(;.*)?$/
  450:     "1234"
  451:  0: "1234"
  452:     "abcd" ;
  453:  0: "abcd" ;
  454:  1: ;
  455:     "" ; rhubarb
  456:  0: "" ; rhubarb
  457:  1: ; rhubarb
  458:     *** Failers
  459: No match
  460:     "1234" : things
  461: No match
  462: 
  463: /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
  464:     abcdefhijklm
  465:  0: abcdefhijklm
  466:  1: abc
  467:  2: bc
  468:  3: c
  469:  4: def
  470:  5: ef
  471:  6: f
  472:  7: hij
  473:  8: ij
  474:  9: j
  475: 10: klm
  476: 11: lm
  477: 12: m
  478: 
  479: /^a*\w/
  480:     z
  481:  0: z
  482:     az
  483:  0: az
  484:     aaaz
  485:  0: aaaz
  486:     a
  487:  0: a
  488:     aa
  489:  0: aa
  490:     aaaa
  491:  0: aaaa
  492:     a+
  493:  0: a
  494:     aa+
  495:  0: aa
  496: 
  497: /^a+\w/
  498:     az
  499:  0: az
  500:     aaaz
  501:  0: aaaz
  502:     aa
  503:  0: aa
  504:     aaaa
  505:  0: aaaa
  506:     aa+
  507:  0: aa
  508: 
  509: /^[0-9]{8}\w{2,}/
  510:     1234567890
  511:  0: 1234567890
  512:     12345678ab
  513:  0: 12345678ab
  514:     12345678__
  515:  0: 12345678__
  516:     *** Failers
  517: No match
  518:     1234567
  519: No match
  520: 
  521: /^[aeiou0-9]{4,5}$/
  522:     uoie
  523:  0: uoie
  524:     1234
  525:  0: 1234
  526:     12345
  527:  0: 12345
  528:     aaaaa
  529:  0: aaaaa
  530:     *** Failers
  531: No match
  532:     123456
  533: No match
  534: 
  535: /\`(abc|def)=(\1){2,3}\'/
  536:     abc=abcabc
  537:  0: abc=abcabc
  538:  1: abc
  539:  2: abc
  540:     def=defdefdef
  541:  0: def=defdefdef
  542:  1: def
  543:  2: def
  544:     *** Failers
  545: No match
  546:     abc=defdef
  547: No match
  548: 
  549: /(cat(a(ract|tonic)|erpillar)) \1()2(3)/
  550:     cataract cataract23
  551:  0: cataract cataract23
  552:  1: cataract
  553:  2: aract
  554:  3: ract
  555:  4: 
  556:  5: 3
  557:     catatonic catatonic23
  558:  0: catatonic catatonic23
  559:  1: catatonic
  560:  2: atonic
  561:  3: tonic
  562:  4: 
  563:  5: 3
  564:     caterpillar caterpillar23
  565:  0: caterpillar caterpillar23
  566:  1: caterpillar
  567:  2: erpillar
  568:  3: <unset>
  569:  4: 
  570:  5: 3
  571: 
  572: 
  573: /^From +([^ ]+) +[a-zA-Z][a-zA-Z][a-zA-Z] +[a-zA-Z][a-zA-Z][a-zA-Z] +[0-9]?[0-9] +[0-9][0-9]:[0-9][0-9]/
  574:     From abcd  Mon Sep 01 12:33:02 1997
  575:  0: From abcd  Mon Sep 01 12:33
  576:  1: abcd
  577: 
  578: /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}[0-9]{1,2}\s+[0-9][0-9]:[0-9][0-9]/
  579:     From abcd  Mon Sep 01 12:33:02 1997
  580:  0: From abcd  Mon Sep 01 12:33
  581:  1: Sep 
  582:     From abcd  Mon Sep  1 12:33:02 1997
  583:  0: From abcd  Mon Sep  1 12:33
  584:  1: Sep  
  585:     *** Failers
  586: No match
  587:     From abcd  Sep 01 12:33:02 1997
  588: No match
  589: 
  590: /^(a)\1{2,3}(.)/
  591:     aaab
  592:  0: aaab
  593:  1: a
  594:  2: b
  595:     aaaab
  596:  0: aaaab
  597:  1: a
  598:  2: b
  599:     aaaaab
  600:  0: aaaaa
  601:  1: a
  602:  2: a
  603:     aaaaaab
  604:  0: aaaaa
  605:  1: a
  606:  2: a
  607: 
  608: /^[ab]{1,3}(ab*|b)/
  609:     aabbbbb
  610:  0: aabbbbb
  611:  1: abbbbb
  612: 
  613: /^(cow|)\1(bell)/
  614:     cowcowbell
  615:  0: cowcowbell
  616:  1: cow
  617:  2: bell
  618:     bell
  619:  0: bell
  620:  1: 
  621:  2: bell
  622:     *** Failers
  623: No match
  624:     cowbell
  625: No match
  626: 
  627: /^(a|)\1+b/
  628:     aab
  629:  0: aab
  630:  1: a
  631:     aaaab
  632:  0: aaaab
  633:  1: a
  634:     b
  635:  0: b
  636:  1: 
  637:     *** Failers
  638: No match
  639:     ab
  640: No match
  641: 
  642: /^(a|)\1{2}b/
  643:     aaab
  644:  0: aaab
  645:  1: a
  646:     b
  647:  0: b
  648:  1: 
  649:     *** Failers
  650: No match
  651:     ab
  652: No match
  653:     aab
  654: No match
  655:     aaaab
  656: No match
  657: 
  658: /^(a|)\1{2,3}b/
  659:     aaab
  660:  0: aaab
  661:  1: a
  662:     aaaab
  663:  0: aaaab
  664:  1: a
  665:     b
  666:  0: b
  667:  1: 
  668:     *** Failers
  669: No match
  670:     ab
  671: No match
  672:     aab
  673: No match
  674:     aaaaab
  675: No match
  676: 
  677: /ab{1,3}bc/
  678:     abbbbc
  679:  0: abbbbc
  680:     abbbc
  681:  0: abbbc
  682:     abbc
  683:  0: abbc
  684:     *** Failers
  685: No match
  686:     abc
  687: No match
  688:     abbbbbc
  689: No match
  690: 
  691: /([^.]*)\.([^:]*):[T ]+(.*)/
  692:     track1.title:TBlah blah blah
  693:  0: track1.title:TBlah blah blah
  694:  1: track1
  695:  2: title
  696:  3: Blah blah blah
  697: 
  698: /([^.]*)\.([^:]*):[T ]+(.*)/i
  699:     track1.title:TBlah blah blah
  700:  0: track1.title:TBlah blah blah
  701:  1: track1
  702:  2: title
  703:  3: Blah blah blah
  704: 
  705: /([^.]*)\.([^:]*):[t ]+(.*)/i
  706:     track1.title:TBlah blah blah
  707:  0: track1.title:TBlah blah blah
  708:  1: track1
  709:  2: title
  710:  3: Blah blah blah
  711: 
  712: /^abc$/
  713:     abc
  714:  0: abc
  715:     *** Failers
  716: No match
  717: 
  718: /[-az]+/
  719:     az-
  720:  0: az-
  721:     *** Failers
  722:  0: a
  723:     b
  724: No match
  725: 
  726: /[az-]+/
  727:     za-
  728:  0: za-
  729:     *** Failers
  730:  0: a
  731:     b
  732: No match
  733: 
  734: /[a-z]+/
  735:     abcdxyz
  736:  0: abcdxyz
  737: 
  738: /[0-9-]+/
  739:     12-34
  740:  0: 12-34
  741:     *** Failers
  742: No match
  743:     aaa
  744: No match
  745: 
  746: /(abc)\1/i
  747:     abcabc
  748:  0: abcabc
  749:  1: abc
  750:     ABCabc
  751:  0: ABCabc
  752:  1: ABC
  753:     abcABC
  754:  0: abcABC
  755:  1: abc
  756: 
  757: /a{0}bc/
  758:     bc
  759:  0: bc
  760: 
  761: /^([^a])([^b])([^c]*)([^d]{3,4})/
  762:     baNOTccccd
  763:  0: baNOTcccc
  764:  1: b
  765:  2: a
  766:  3: NOT
  767:  4: cccc
  768:     baNOTcccd
  769:  0: baNOTccc
  770:  1: b
  771:  2: a
  772:  3: NOT
  773:  4: ccc
  774:     baNOTccd
  775:  0: baNOTcc
  776:  1: b
  777:  2: a
  778:  3: NO
  779:  4: Tcc
  780:     bacccd
  781:  0: baccc
  782:  1: b
  783:  2: a
  784:  3: 
  785:  4: ccc
  786:     *** Failers
  787:  0: *** Failers
  788:  1: *
  789:  2: *
  790:  3: * Fail
  791:  4: ers
  792:     anything
  793: No match
  794:     baccd
  795: No match
  796: 
  797: /[^a]/
  798:     Abc
  799:  0: A
  800: 
  801: /[^a]/i
  802:     Abc 
  803:  0: b
  804: 
  805: /[^a]+/
  806:     AAAaAbc
  807:  0: AAA
  808: 
  809: /[^a]+/i
  810:     AAAaAbc
  811:  0: bc
  812: 
  813: /[^k]$/
  814:     abc
  815:  0: c
  816:     *** Failers
  817:  0: s
  818:     abk
  819: No match
  820: 
  821: /[^k]{2,3}$/
  822:     abc
  823:  0: abc
  824:     kbc
  825:  0: bc
  826:     kabc
  827:  0: abc
  828:     *** Failers
  829:  0: ers
  830:     abk
  831: No match
  832:     akb
  833: No match
  834:     akk 
  835: No match
  836: 
  837: /^[0-9]{8,}@.+[^k]$/
  838:     12345678@a.b.c.d
  839:  0: 12345678@a.b.c.d
  840:     123456789@x.y.z
  841:  0: 123456789@x.y.z
  842:     *** Failers
  843: No match
  844:     12345678@x.y.uk
  845: No match
  846:     1234567@a.b.c.d       
  847: No match
  848: 
  849: /(a)\1{8,}/
  850:     aaaaaaaaa
  851:  0: aaaaaaaaa
  852:  1: a
  853:     aaaaaaaaaa
  854:  0: aaaaaaaaaa
  855:  1: a
  856:     *** Failers
  857: No match
  858:     aaaaaaa   
  859: No match
  860: 
  861: /[^a]/
  862:     aaaabcd
  863:  0: b
  864:     aaAabcd 
  865:  0: A
  866: 
  867: /[^a]/i
  868:     aaaabcd
  869:  0: b
  870:     aaAabcd 
  871:  0: b
  872: 
  873: /[^az]/
  874:     aaaabcd
  875:  0: b
  876:     aaAabcd 
  877:  0: A
  878: 
  879: /[^az]/i
  880:     aaaabcd
  881:  0: b
  882:     aaAabcd 
  883:  0: b
  884: 
  885: /P[^*]TAIRE[^*]{1,6}LL/
  886:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
  887:  0: PSTAIREISLL
  888: 
  889: /P[^*]TAIRE[^*]{1,}LL/
  890:     xxxxxxxxxxxPSTAIREISLLxxxxxxxxx
  891:  0: PSTAIREISLL
  892: