/vendor/pcre/testdata/testoutput7
http://github.com/feyeleanor/RubyGoLightly · #! · 7257 lines · 6464 code · 793 blank · 0 comment · 0 complexity · 9c72a53ebadbc73f1eff5e8466fcef62 MD5 · raw file
Large files are truncated click here to view the full file
- /abc/
- abc
- 0: abc
-
- /ab*c/
- abc
- 0: abc
- abbbbc
- 0: abbbbc
- ac
- 0: ac
-
- /ab+c/
- abc
- 0: abc
- abbbbbbc
- 0: abbbbbbc
- *** Failers
- No match
- ac
- No match
- ab
- No match
-
- /a*/
- a
- 0: a
- 1:
- aaaaaaaaaaaaaaaaa
- 0: aaaaaaaaaaaaaaaaa
- 1: aaaaaaaaaaaaaaaa
- 2: aaaaaaaaaaaaaaa
- 3: aaaaaaaaaaaaaa
- 4: aaaaaaaaaaaaa
- 5: aaaaaaaaaaaa
- 6: aaaaaaaaaaa
- 7: aaaaaaaaaa
- 8: aaaaaaaaa
- 9: aaaaaaaa
- 10: aaaaaaa
- 11: aaaaaa
- 12: aaaaa
- 13: aaaa
- 14: aaa
- 15: aa
- 16: a
- 17:
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- Matched, but too many subsidiary matches
- 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- 1: aaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- 2: aaaaaaaaaaaaaaaaaaaaaaaaaaaa
- 3: aaaaaaaaaaaaaaaaaaaaaaaaaaa
- 4: aaaaaaaaaaaaaaaaaaaaaaaaaa
- 5: aaaaaaaaaaaaaaaaaaaaaaaaa
- 6: aaaaaaaaaaaaaaaaaaaaaaaa
- 7: aaaaaaaaaaaaaaaaaaaaaaa
- 8: aaaaaaaaaaaaaaaaaaaaaa
- 9: aaaaaaaaaaaaaaaaaaaaa
- 10: aaaaaaaaaaaaaaaaaaaa
- 11: aaaaaaaaaaaaaaaaaaa
- 12: aaaaaaaaaaaaaaaaaa
- 13: aaaaaaaaaaaaaaaaa
- 14: aaaaaaaaaaaaaaaa
- 15: aaaaaaaaaaaaaaa
- 16: aaaaaaaaaaaaaa
- 17: aaaaaaaaaaaaa
- 18: aaaaaaaaaaaa
- 19: aaaaaaaaaaa
- 20: aaaaaaaaaa
- 21: aaaaaaaaa
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\F
- 0:
-
- /(a|abcd|african)/
- a
- 0: a
- abcd
- 0: abcd
- 1: a
- african
- 0: african
- 1: a
-
- /^abc/
- abcdef
- 0: abc
- *** Failers
- No match
- xyzabc
- No match
- xyz\nabc
- No match
-
- /^abc/m
- abcdef
- 0: abc
- xyz\nabc
- 0: abc
- *** Failers
- No match
- xyzabc
- No match
-
- /\Aabc/
- abcdef
- 0: abc
- *** Failers
- No match
- xyzabc
- No match
- xyz\nabc
- No match
-
- /\Aabc/m
- abcdef
- 0: abc
- *** Failers
- No match
- xyzabc
- No match
- xyz\nabc
- No match
-
- /\Gabc/
- abcdef
- 0: abc
- xyzabc\>3
- 0: abc
- *** Failers
- No match
- xyzabc
- No match
- xyzabc\>2
- No match
-
- /x\dy\Dz/
- x9yzz
- 0: x9yzz
- x0y+z
- 0: x0y+z
- *** Failers
- No match
- xyz
- No match
- xxy0z
- No match
-
- /x\sy\Sz/
- x yzz
- 0: x yzz
- x y+z
- 0: x y+z
- *** Failers
- No match
- xyz
- No match
- xxyyz
- No match
-
- /x\wy\Wz/
- xxy+z
- 0: xxy+z
- *** Failers
- No match
- xxy0z
- No match
- x+y+z
- No match
-
- /x.y/
- x+y
- 0: x+y
- x-y
- 0: x-y
- *** Failers
- No match
- x\ny
- No match
-
- /x.y/s
- x+y
- 0: x+y
- x-y
- 0: x-y
- x\ny
- 0: x\x0ay
- /(a.b(?s)c.d|x.y)p.q/
- a+bc+dp+q
- 0: a+bc+dp+q
- a+bc\ndp+q
- 0: a+bc\x0adp+q
- x\nyp+q
- 0: x\x0ayp+q
- *** Failers
- No match
- a\nbc\ndp+q
- No match
- a+bc\ndp\nq
- No match
- x\nyp\nq
- No match
- /a\d\z/
- ba0
- 0: a0
- *** Failers
- No match
- ba0\n
- No match
- ba0\ncd
- No match
- /a\d\z/m
- ba0
- 0: a0
- *** Failers
- No match
- ba0\n
- No match
- ba0\ncd
- No match
- /a\d\Z/
- ba0
- 0: a0
- ba0\n
- 0: a0
- *** Failers
- No match
- ba0\ncd
- No match
- /a\d\Z/m
- ba0
- 0: a0
- ba0\n
- 0: a0
- *** Failers
- No match
- ba0\ncd
- No match
- /a\d$/
- ba0
- 0: a0
- ba0\n
- 0: a0
- *** Failers
- No match
- ba0\ncd
- No match
- /a\d$/m
- ba0
- 0: a0
- ba0\n
- 0: a0
- ba0\ncd
- 0: a0
- *** Failers
- No match
- /abc/i
- abc
- 0: abc
- aBc
- 0: aBc
- ABC
- 0: ABC
-
- /[^a]/
- abcd
- 0: b
-
- /ab?\w/
- abz
- 0: abz
- 1: ab
- abbz
- 0: abb
- 1: ab
- azz
- 0: az
- /x{0,3}yz/
- ayzq
- 0: yz
- axyzq
- 0: xyz
- axxyz
- 0: xxyz
- axxxyzq
- 0: xxxyz
- axxxxyzq
- 0: xxxyz
- *** Failers
- No match
- ax
- No match
- axx
- No match
-
- /x{3}yz/
- axxxyzq
- 0: xxxyz
- axxxxyzq
- 0: xxxyz
- *** Failers
- No match
- ax
- No match
- axx
- No match
- ayzq
- No match
- axyzq
- No match
- axxyz
- No match
-
- /x{2,3}yz/
- axxyz
- 0: xxyz
- axxxyzq
- 0: xxxyz
- axxxxyzq
- 0: xxxyz
- *** Failers
- No match
- ax
- No match
- axx
- No match
- ayzq
- No match
- axyzq
- No match
-
- /[^a]+/
- bac
- 0: b
- bcdefax
- 0: bcdef
- 1: bcde
- 2: bcd
- 3: bc
- 4: b
- *** Failers
- 0: *** F
- 1: ***
- 2: ***
- 3: **
- 4: *
- aaaaa
- No match
- /[^a]*/
- bac
- 0: b
- 1:
- bcdefax
- 0: bcdef
- 1: bcde
- 2: bcd
- 3: bc
- 4: b
- 5:
- *** Failers
- 0: *** F
- 1: ***
- 2: ***
- 3: **
- 4: *
- 5:
- aaaaa
- 0:
-
- /[^a]{3,5}/
- xyz
- 0: xyz
- awxyza
- 0: wxyz
- 1: wxy
- abcdefa
- 0: bcdef
- 1: bcde
- 2: bcd
- abcdefghijk
- 0: bcdef
- 1: bcde
- 2: bcd
- *** Failers
- 0: *** F
- 1: ***
- 2: ***
- axya
- No match
- axa
- No match
- aaaaa
- No match
- /\d*/
- 1234b567
- 0: 1234
- 1: 123
- 2: 12
- 3: 1
- 4:
- xyz
- 0:
-
- /\D*/
- a1234b567
- 0: a
- 1:
- xyz
- 0: xyz
- 1: xy
- 2: x
- 3:
-
- /\d+/
- ab1234c56
- 0: 1234
- 1: 123
- 2: 12
- 3: 1
- *** Failers
- No match
- xyz
- No match
-
- /\D+/
- ab123c56
- 0: ab
- 1: a
- *** Failers
- 0: *** Failers
- 1: *** Failer
- 2: *** Faile
- 3: *** Fail
- 4: *** Fai
- 5: *** Fa
- 6: *** F
- 7: ***
- 8: ***
- 9: **
- 10: *
- 789
- No match
-
- /\d?A/
- 045ABC
- 0: 5A
- ABC
- 0: A
- *** Failers
- No match
- XYZ
- No match
-
- /\D?A/
- ABC
- 0: A
- BAC
- 0: BA
- 9ABC
- 0: A
- *** Failers
- No match
- /a+/
- aaaa
- 0: aaaa
- 1: aaa
- 2: aa
- 3: a
- /^.*xyz/
- xyz
- 0: xyz
- ggggggggxyz
- 0: ggggggggxyz
-
- /^.+xyz/
- abcdxyz
- 0: abcdxyz
- axyz
- 0: axyz
- *** Failers
- No match
- xyz
- No match
-
- /^.?xyz/
- xyz
- 0: xyz
- cxyz
- 0: cxyz
- /^\d{2,3}X/
- 12X
- 0: 12X
- 123X
- 0: 123X
- *** Failers
- No match
- X
- No match
- 1X
- No match
- 1234X
- No match
- /^[abcd]\d/
- a45
- 0: a4
- b93
- 0: b9
- c99z
- 0: c9
- d04
- 0: d0
- *** Failers
- No match
- e45
- No match
- abcd
- No match
- abcd1234
- No match
- 1234
- No match
- /^[abcd]*\d/
- a45
- 0: a4
- b93
- 0: b9
- c99z
- 0: c9
- d04
- 0: d0
- abcd1234
- 0: abcd1
- 1234
- 0: 1
- *** Failers
- No match
- e45
- No match
- abcd
- No match
- /^[abcd]+\d/
- a45
- 0: a4
- b93
- 0: b9
- c99z
- 0: c9
- d04
- 0: d0
- abcd1234
- 0: abcd1
- *** Failers
- No match
- 1234
- No match
- e45
- No match
- abcd
- No match
- /^a+X/
- aX
- 0: aX
- aaX
- 0: aaX
- /^[abcd]?\d/
- a45
- 0: a4
- b93
- 0: b9
- c99z
- 0: c9
- d04
- 0: d0
- 1234
- 0: 1
- *** Failers
- No match
- abcd1234
- No match
- e45
- No match
- /^[abcd]{2,3}\d/
- ab45
- 0: ab4
- bcd93
- 0: bcd9
- *** Failers
- No match
- 1234
- No match
- a36
- No match
- abcd1234
- No match
- ee45
- No match
- /^(abc)*\d/
- abc45
- 0: abc4
- abcabcabc45
- 0: abcabcabc4
- 42xyz
- 0: 4
- *** Failers
- No match
- /^(abc)+\d/
- abc45
- 0: abc4
- abcabcabc45
- 0: abcabcabc4
- *** Failers
- No match
- 42xyz
- No match
- /^(abc)?\d/
- abc45
- 0: abc4
- 42xyz
- 0: 4
- *** Failers
- No match
- abcabcabc45
- No match
- /^(abc){2,3}\d/
- abcabc45
- 0: abcabc4
- abcabcabc45
- 0: abcabcabc4
- *** Failers
- No match
- abcabcabcabc45
- No match
- abc45
- No match
- 42xyz
- No match
- /1(abc|xyz)2(?1)3/
- 1abc2abc3456
- 0: 1abc2abc3
- 1abc2xyz3456
- 0: 1abc2xyz3
- /^(a*\w|ab)=(a*\w|ab)/
- ab=ab
- 0: ab=ab
- 1: ab=a
- /^(a*\w|ab)=(?1)/
- ab=ab
- 0: ab=ab
- /^([^()]|\((?1)*\))*$/
- abc
- 0: abc
- a(b)c
- 0: a(b)c
- a(b(c))d
- 0: a(b(c))d
- *** Failers)
- No match
- a(b(c)d
- No match
- /^>abc>([^()]|\((?1)*\))*<xyz<$/
- >abc>123<xyz<
- 0: >abc>123<xyz<
- >abc>1(2)3<xyz<
- 0: >abc>1(2)3<xyz<
- >abc>(1(2)3)<xyz<
- 0: >abc>(1(2)3)<xyz<
- /^(?>a*)\d/
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9876
- 0: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa9
- *** Failers
- No match
- aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
- No match
- /< (?: (?(R) \d++ | [^<>]*+) | (?R)) * >/x
- <>
- 0: <>
- <abcd>
- 0: <abcd>
- <abc <123> hij>
- 0: <abc <123> hij>
- <abc <def> hij>
- 0: <def>
- <abc<>def>
- 0: <abc<>def>
- <abc<>
- 0: <>
- *** Failers
- No match
- <abc
- No match
- /^(?(?=abc)\w{3}:|\d\d)$/
- abc:
- 0: abc:
- 12
- 0: 12
- *** Failers
- No match
- 123
- No match
- xyz
- No match
-
- /^(?(?!abc)\d\d|\w{3}:)$/
- abc:
- 0: abc:
- 12
- 0: 12
- *** Failers
- No match
- 123
- No match
- xyz
- No match
- /^(?=abc)\w{5}:$/
- abcde:
- 0: abcde:
- *** Failers
- No match
- abc..
- No match
- 123
- No match
- vwxyz
- No match
-
- /^(?!abc)\d\d$/
- 12
- 0: 12
- *** Failers
- No match
- abcde:
- No match
- abc..
- No match
- 123
- No match
- vwxyz
- No match
- /(?<=abc|xy)123/
- abc12345
- 0: 123
- wxy123z
- 0: 123
- *** Failers
- No match
- 123abc
- No match
- /(?<!abc|xy)123/
- 123abc
- 0: 123
- mno123456
- 0: 123
- *** Failers
- No match
- abc12345
- No match
- wxy123z
- No match
- /abc(?C1)xyz/
- abcxyz
- --->abcxyz
- 1 ^ ^ x
- 0: abcxyz
- 123abcxyz999
- --->123abcxyz999
- 1 ^ ^ x
- 0: abcxyz
- /(ab|cd){3,4}/C
- ababab
- --->ababab
- +0 ^ (ab|cd){3,4}
- +1 ^ a
- +4 ^ c
- +2 ^^ b
- +3 ^ ^ |
- +1 ^ ^ a
- +4 ^ ^ c
- +2 ^ ^ b
- +3 ^ ^ |
- +1 ^ ^ a
- +4 ^ ^ c
- +2 ^ ^ b
- +3 ^ ^ |
- +12 ^ ^
- +1 ^ ^ a
- +4 ^ ^ c
- 0: ababab
- abcdabcd
- --->abcdabcd
- +0 ^ (ab|cd){3,4}
- +1 ^ a
- +4 ^ c
- +2 ^^ b
- +3 ^ ^ |
- +1 ^ ^ a
- +4 ^ ^ c
- +5 ^ ^ d
- +6 ^ ^ )
- +1 ^ ^ a
- +4 ^ ^ c
- +2 ^ ^ b
- +3 ^ ^ |
- +12 ^ ^
- +1 ^ ^ a
- +4 ^ ^ c
- +5 ^ ^ d
- +6 ^ ^ )
- +12 ^ ^
- 0: abcdabcd
- 1: abcdab
- abcdcdcdcdcd
- --->abcdcdcdcdcd
- +0 ^ (ab|cd){3,4}
- +1 ^ a
- +4 ^ c
- +2 ^^ b
- +3 ^ ^ |
- +1 ^ ^ a
- +4 ^ ^ c
- +5 ^ ^ d
- +6 ^ ^ )
- +1 ^ ^ a
- +4 ^ ^ c
- +5 ^ ^ d
- +6 ^ ^ )
- +12 ^ ^
- +1 ^ ^ a
- +4 ^ ^ c
- +5 ^ ^ d
- +6 ^ ^ )
- +12 ^ ^
- 0: abcdcdcd
- 1: abcdcd
- /^abc/
- abcdef
- 0: abc
- *** Failers
- No match
- abcdef\B
- No match
- /^(a*|xyz)/
- bcd
- 0:
- aaabcd
- 0: aaa
- 1: aa
- 2: a
- 3:
- xyz
- 0: xyz
- 1:
- xyz\N
- 0: xyz
- *** Failers
- 0:
- bcd\N
- No match
-
- /xyz$/
- xyz
- 0: xyz
- xyz\n
- 0: xyz
- *** Failers
- No match
- xyz\Z
- No match
- xyz\n\Z
- No match
-
- /xyz$/m
- xyz
- 0: xyz
- xyz\n
- 0: xyz
- abcxyz\npqr
- 0: xyz
- abcxyz\npqr\Z
- 0: xyz
- xyz\n\Z
- 0: xyz
- *** Failers
- No match
- xyz\Z
- No match
- /\Gabc/
- abcdef
- 0: abc
- defabcxyz\>3
- 0: abc
- *** Failers
- No match
- defabcxyz
- No match
- /^abcdef/
- ab\P
- Partial match: ab
- abcde\P
- Partial match: abcde
- abcdef\P
- 0: abcdef
- *** Failers
- No match
- abx\P
- No match
- /^a{2,4}\d+z/
- a\P
- Partial match: a
- aa\P
- Partial match: aa
- aa2\P
- Partial match: aa2
- aaa\P
- Partial match: aaa
- aaa23\P
- Partial match: aaa23
- aaaa12345\P
- Partial match: aaaa12345
- aa0z\P
- 0: aa0z
- aaaa4444444444444z\P
- 0: aaaa4444444444444z
- *** Failers
- No match
- az\P
- No match
- aaaaa\P
- No match
- a56\P
- No match
- /^abcdef/
- abc\P
- Partial match: abc
- def\R
- 0: def
-
- /(?<=foo)bar/
- xyzfo\P
- No match
- foob\P\>2
- Partial match: b
- foobar...\R\P\>4
- 0: ar
- xyzfo\P
- No match
- foobar\>2
- 0: bar
- *** Failers
- No match
- xyzfo\P
- No match
- obar\R
- No match
- /(ab*(cd|ef))+X/
- adfadadaklhlkalkajhlkjahdfasdfasdfladsfjkj\P\Z
- No match
- lkjhlkjhlkjhlkjhabbbbbbcdaefabbbbbbbefa\P\B\Z
- Partial match: abbbbbbcdaefabbbbbbbefa
- cdabbbbbbbb\P\R\B\Z
- Partial match: cdabbbbbbbb
- efabbbbbbbbbbbbbbbb\P\R\B\Z
- Partial match: efabbbbbbbbbbbbbbbb
- bbbbbbbbbbbbcdXyasdfadf\P\R\B\Z
- 0: bbbbbbbbbbbbcdX
- /(a|b)/SF>testsavedregex
- Compiled regex written to testsavedregex
- Study data written to testsavedregex
- <testsavedregex
- Compiled regex (byte-inverted) loaded from testsavedregex
- Study data loaded from testsavedregex
- abc
- 0: a
- ** Failers
- 0: a
- def
- No match
-
- /the quick brown fox/
- the quick brown fox
- 0: the quick brown fox
- The quick brown FOX
- No match
- What do you know about the quick brown fox?
- 0: the quick brown fox
- What do you know about THE QUICK BROWN FOX?
- No match
- /The quick brown fox/i
- the quick brown fox
- 0: the quick brown fox
- The quick brown FOX
- 0: The quick brown FOX
- What do you know about the quick brown fox?
- 0: the quick brown fox
- What do you know about THE QUICK BROWN FOX?
- 0: THE QUICK BROWN FOX
- /abcd\t\n\r\f\a\e\071\x3b\$\\\?caxyz/
- abcd\t\n\r\f\a\e9;\$\\?caxyz
- 0: abcd\x09\x0a\x0d\x0c\x07\x1b9;$\?caxyz
- /a*abc?xyz+pqr{3}ab{2,}xy{4,5}pq{0,6}AB{0,}zz/
- abxyzpqrrrabbxyyyypqAzz
- 0: abxyzpqrrrabbxyyyypqAzz
- abxyzpqrrrabbxyyyypqAzz
- 0: abxyzpqrrrabbxyyyypqAzz
- aabxyzpqrrrabbxyyyypqAzz
- 0: aabxyzpqrrrabbxyyyypqAzz
- aaabxyzpqrrrabbxyyyypqAzz
- 0: aaabxyzpqrrrabbxyyyypqAzz
- aaaabxyzpqrrrabbxyyyypqAzz
- 0: aaaabxyzpqrrrabbxyyyypqAzz
- abcxyzpqrrrabbxyyyypqAzz
- 0: abcxyzpqrrrabbxyyyypqAzz
- aabcxyzpqrrrabbxyyyypqAzz
- 0: aabcxyzpqrrrabbxyyyypqAzz
- aaabcxyzpqrrrabbxyyyypAzz
- 0: aaabcxyzpqrrrabbxyyyypAzz
- aaabcxyzpqrrrabbxyyyypqAzz
- 0: aaabcxyzpqrrrabbxyyyypqAzz
- aaabcxyzpqrrrabbxyyyypqqAzz
- 0: aaabcxyzpqrrrabbxyyyypqqAzz
- aaabcxyzpqrrrabbxyyyypqqqAzz
- 0: aaabcxyzpqrrrabbxyyyypqqqAzz
- aaabcxyzpqrrrabbxyyyypqqqqAzz
- 0: aaabcxyzpqrrrabbxyyyypqqqqAzz
- aaabcxyzpqrrrabbxyyyypqqqqqAzz
- 0: aaabcxyzpqrrrabbxyyyypqqqqqAzz
- aaabcxyzpqrrrabbxyyyypqqqqqqAzz
- 0: aaabcxyzpqrrrabbxyyyypqqqqqqAzz
- aaaabcxyzpqrrrabbxyyyypqAzz
- 0: aaaabcxyzpqrrrabbxyyyypqAzz
- abxyzzpqrrrabbxyyyypqAzz
- 0: abxyzzpqrrrabbxyyyypqAzz
- aabxyzzzpqrrrabbxyyyypqAzz
- 0: aabxyzzzpqrrrabbxyyyypqAzz
- aaabxyzzzzpqrrrabbxyyyypqAzz
- 0: aaabxyzzzzpqrrrabbxyyyypqAzz
- aaaabxyzzzzpqrrrabbxyyyypqAzz
- 0: aaaabxyzzzzpqrrrabbxyyyypqAzz
- abcxyzzpqrrrabbxyyyypqAzz
- 0: abcxyzzpqrrrabbxyyyypqAzz
- aabcxyzzzpqrrrabbxyyyypqAzz
- 0: aabcxyzzzpqrrrabbxyyyypqAzz
- aaabcxyzzzzpqrrrabbxyyyypqAzz
- 0: aaabcxyzzzzpqrrrabbxyyyypqAzz
- aaaabcxyzzzzpqrrrabbxyyyypqAzz
- 0: aaaabcxyzzzzpqrrrabbxyyyypqAzz
- aaaabcxyzzzzpqrrrabbbxyyyypqAzz
- 0: aaaabcxyzzzzpqrrrabbbxyyyypqAzz
- aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
- 0: aaaabcxyzzzzpqrrrabbbxyyyyypqAzz
- aaabcxyzpqrrrabbxyyyypABzz
- 0: aaabcxyzpqrrrabbxyyyypABzz
- aaabcxyzpqrrrabbxyyyypABBzz
- 0: aaabcxyzpqrrrabbxyyyypABBzz
- >>>aaabxyzpqrrrabbxyyyypqAzz
- 0: aaabxyzpqrrrabbxyyyypqAzz
- >aaaabxyzpqrrrabbxyyyypqAzz
- 0: aaaabxyzpqrrrabbxyyyypqAzz
- >>>>abcxyzpqrrrabbxyyyypqAzz
- 0: abcxyzpqrrrabbxyyyypqAzz
- *** Failers
- No match
- abxyzpqrrabbxyyyypqAzz
- No match
- abxyzpqrrrrabbxyyyypqAzz
- No match
- abxyzpqrrrabxyyyypqAzz
- No match
- aaaabcxyzzzzpqrrrabbbxyyyyyypqAzz
- No match
- aaaabcxyzzzzpqrrrabbbxyyypqAzz
- No match
- aaabcxyzpqrrrabbxyyyypqqqqqqqAzz
- No match
- /^(abc){1,2}zz/
- abczz
- 0: abczz
- abcabczz
- 0: abcabczz
- *** Failers
- No match
- zz
- No match
- abcabcabczz
- No match
- >>abczz
- No match
- /^(b+?|a){1,2}?c/
- bc
- 0: bc
- bbc
- 0: bbc
- bbbc
- 0: bbbc
- bac
- 0: bac
- bbac
- 0: bbac
- aac
- 0: aac
- abbbbbbbbbbbc
- 0: abbbbbbbbbbbc
- bbbbbbbbbbbac
- 0: bbbbbbbbbbbac
- *** Failers
- No match
- aaac
- No match
- abbbbbbbbbbbac
- No match
- /^(b+|a){1,2}c/
- bc
- 0: bc
- bbc
- 0: bbc
- bbbc
- 0: bbbc
- bac
- 0: bac
- bbac
- 0: bbac
- aac
- 0: aac
- abbbbbbbbbbbc
- 0: abbbbbbbbbbbc
- bbbbbbbbbbbac
- 0: bbbbbbbbbbbac
- *** Failers
- No match
- aaac
- No match
- abbbbbbbbbbbac
- No match
- /^(b+|a){1,2}?bc/
- bbc
- 0: bbc
- /^(b*|ba){1,2}?bc/
- babc
- 0: babc
- bbabc
- 0: bbabc
- bababc
- 0: bababc
- *** Failers
- No match
- bababbc
- No match
- babababc
- No match
- /^(ba|b*){1,2}?bc/
- babc
- 0: babc
- bbabc
- 0: bbabc
- bababc
- 0: bababc
- *** Failers
- No match
- bababbc
- No match
- babababc
- No match
- /^\ca\cA\c[\c{\c:/
- \x01\x01\e;z
- 0: \x01\x01\x1b;z
- /^[ab\]cde]/
- athing
- 0: a
- bthing
- 0: b
- ]thing
- 0: ]
- cthing
- 0: c
- dthing
- 0: d
- ething
- 0: e
- *** Failers
- No match
- fthing
- No match
- [thing
- No match
- \\thing
- No match
- /^[]cde]/
- ]thing
- 0: ]
- cthing
- 0: c
- dthing
- 0: d
- ething
- 0: e
- *** Failers
- No match
- athing
- No match
- fthing
- No match
- /^[^ab\]cde]/
- fthing
- 0: f
- [thing
- 0: [
- \\thing
- 0: \
- *** Failers
- 0: *
- athing
- No match
- bthing
- No match
- ]thing
- No match
- cthing
- No match
- dthing
- No match
- ething
- No match
- /^[^]cde]/
- athing
- 0: a
- fthing
- 0: f
- *** Failers
- 0: *
- ]thing
- No match
- cthing
- No match
- dthing
- No match
- ething
- No match
- /^\Б/
- Б
- 0: \x81
- /^€/
- €
- 0: \xff
- /^[0-9]+$/
- 0
- 0: 0
- 1
- 0: 1
- 2
- 0: 2
- 3
- 0: 3
- 4
- 0: 4
- 5
- 0: 5
- 6
- 0: 6
- 7
- 0: 7
- 8
- 0: 8
- 9
- 0: 9
- 10
- 0: 10
- 100
- 0: 100
- *** Failers
- No match
- abc
- No match
- /^.*nter/
- enter
- 0: enter
- inter
- 0: inter
- uponter
- 0: uponter
- /^xxx[0-9]+$/
- xxx0
- 0: xxx0
- xxx1234
- 0: xxx1234
- *** Failers
- No match
- xxx
- No match
- /^.+[0-9][0-9][0-9]$/
- x123
- 0: x123
- xx123
- 0: xx123
- 123456
- 0: 123456
- *** Failers
- No match
- 123
- No match
- x1234
- 0: x1234
- /^.+?[0-9][0-9][0-9]$/
- x123
- 0: x123
- xx123
- 0: xx123
- 123456
- 0: 123456
- *** Failers
- No match
- 123
- No match
- x1234
- 0: x1234
- /^([^!]+)!(.+)=apquxz\.ixr\.zzz\.ac\.uk$/
- abc!pqr=apquxz.ixr.zzz.ac.uk
- 0: abc!pqr=apquxz.ixr.zzz.ac.uk
- *** Failers
- No match
- !pqr=apquxz.ixr.zzz.ac.uk
- No match
- abc!=apquxz.ixr.zzz.ac.uk
- No match
- abc!pqr=apquxz:ixr.zzz.ac.uk
- No match
- abc!pqr=apquxz.ixr.zzz.ac.ukk
- No match
- /:/
- Well, we need a colon: somewhere
- 0: :
- *** Fail if we don't
- No match
- /([\da-f:]+)$/i
- 0abc
- 0: 0abc
- abc
- 0: abc
- fed
- 0: fed
- E
- 0: E
- ::
- 0: ::
- 5f03:12C0::932e
- 0: 5f03:12C0::932e
- fed def
- 0: def
- Any old stuff
- 0: ff
- *** Failers
- No match
- 0zzz
- No match
- gzzz
- No match
- fed\x20
- No match
- Any old rubbish
- No match
- /^.*\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/
- .1.2.3
- 0: .1.2.3
- A.12.123.0
- 0: A.12.123.0
- *** Failers
- No match
- .1.2.3333
- No match
- 1.2.3
- No match
- 1234.2.3
- No match
- /^(\d+)\s+IN\s+SOA\s+(\S+)\s+(\S+)\s*\(\s*$/
- 1 IN SOA non-sp1 non-sp2(
- 0: 1 IN SOA non-sp1 non-sp2(
- 1 IN SOA non-sp1 non-sp2 (
- 0: 1 IN SOA non-sp1 non-sp2 (
- *** Failers
- No match
- 1IN SOA non-sp1 non-sp2(
- No match
- /^[a-zA-Z\d][a-zA-Z\d\-]*(\.[a-zA-Z\d][a-zA-z\d\-]*)*\.$/
- a.
- 0: a.
- Z.
- 0: Z.
- 2.
- 0: 2.
- ab-c.pq-r.
- 0: ab-c.pq-r.
- sxk.zzz.ac.uk.
- 0: sxk.zzz.ac.uk.
- x-.y-.
- 0: x-.y-.
- *** Failers
- No match
- -abc.peq.
- No match
- /^\*\.[a-z]([a-z\-\d]*[a-z\d]+)?(\.[a-z]([a-z\-\d]*[a-z\d]+)?)*$/
- *.a
- 0: *.a
- *.b0-a
- 0: *.b0-a
- *.c3-b.c
- 0: *.c3-b.c
- *.c-a.b-c
- 0: *.c-a.b-c
- *** Failers
- No match
- *.0
- No match
- *.a-
- No match
- *.a-b.c-
- No match
- *.c-a.0-c
- No match
- /^(?=ab(de))(abd)(e)/
- abde
- 0: abde
- /^(?!(ab)de|x)(abd)(f)/
- abdf
- 0: abdf
- /^(?=(ab(cd)))(ab)/
- abcd
- 0: ab
- /^[\da-f](\.[\da-f])*$/i
- a.b.c.d
- 0: a.b.c.d
- A.B.C.D
- 0: A.B.C.D
- a.b.c.1.2.3.C
- 0: a.b.c.1.2.3.C
- /^\".*\"\s*(;.*)?$/
- \"1234\"
- 0: "1234"
- \"abcd\" ;
- 0: "abcd" ;
- \"\" ; rhubarb
- 0: "" ; rhubarb
- *** Failers
- No match
- \"1234\" : things
- No match
- /^$/
- \
- 0:
- *** Failers
- No match
- / ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/x
- ab c
- 0: ab c
- *** Failers
- No match
- abc
- No match
- ab cde
- No match
- /(?x) ^ a (?# begins with a) b\sc (?# then b c) $ (?# then end)/
- ab c
- 0: ab c
- *** Failers
- No match
- abc
- No match
- ab cde
- No match
- /^ a\ b[c ]d $/x
- a bcd
- 0: a bcd
- a b d
- 0: a b d
- *** Failers
- No match
- abcd
- No match
- ab d
- No match
- /^(a(b(c)))(d(e(f)))(h(i(j)))(k(l(m)))$/
- abcdefhijklm
- 0: abcdefhijklm
- /^(?:a(b(c)))(?:d(e(f)))(?:h(i(j)))(?:k(l(m)))$/
- abcdefhijklm
- 0: abcdefhijklm
- /^[\w][\W][\s][\S][\d][\D][\b][\n][\c]][\022]/
- a+ Z0+\x08\n\x1d\x12
- 0: a+ Z0+\x08\x0a\x1d\x12
- /^[.^$|()*+?{,}]+/
- .^\$(*+)|{?,?}
- 0: .^$(*+)|{?,?}
- 1: .^$(*+)|{?,?
- 2: .^$(*+)|{?,
- 3: .^$(*+)|{?
- 4: .^$(*+)|{
- 5: .^$(*+)|
- 6: .^$(*+)
- 7: .^$(*+
- 8: .^$(*
- 9: .^$(
- 10: .^$
- 11: .^
- 12: .
- /^a*\w/
- z
- 0: z
- az
- 0: az
- 1: a
- aaaz
- 0: aaaz
- 1: aaa
- 2: aa
- 3: a
- a
- 0: a
- aa
- 0: aa
- 1: a
- aaaa
- 0: aaaa
- 1: aaa
- 2: aa
- 3: a
- a+
- 0: a
- aa+
- 0: aa
- 1: a
- /^a*?\w/
- z
- 0: z
- az
- 0: az
- 1: a
- aaaz
- 0: aaaz
- 1: aaa
- 2: aa
- 3: a
- a
- 0: a
- aa
- 0: aa
- 1: a
- aaaa
- 0: aaaa
- 1: aaa
- 2: aa
- 3: a
- a+
- 0: a
- aa+
- 0: aa
- 1: a
- /^a+\w/
- az
- 0: az
- aaaz
- 0: aaaz
- 1: aaa
- 2: aa
- aa
- 0: aa
- aaaa
- 0: aaaa
- 1: aaa
- 2: aa
- aa+
- 0: aa
- /^a+?\w/
- az
- 0: az
- aaaz
- 0: aaaz
- 1: aaa
- 2: aa
- aa
- 0: aa
- aaaa
- 0: aaaa
- 1: aaa
- 2: aa
- aa+
- 0: aa
- /^\d{8}\w{2,}/
- 1234567890
- 0: 1234567890
- 12345678ab
- 0: 12345678ab
- 12345678__
- 0: 12345678__
- *** Failers
- No match
- 1234567
- No match
- /^[aeiou\d]{4,5}$/
- uoie
- 0: uoie
- 1234
- 0: 1234
- 12345
- 0: 12345
- aaaaa
- 0: aaaaa
- *** Failers
- No match
- 123456
- No match
- /^[aeiou\d]{4,5}?/
- uoie
- 0: uoie
- 1234
- 0: 1234
- 12345
- 0: 12345
- 1: 1234
- aaaaa
- 0: aaaaa
- 1: aaaa
- 123456
- 0: 12345
- 1: 1234
- /^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]/
- From abcd Mon Sep 01 12:33:02 1997
- 0: From abcd Mon Sep 01 12:33
- /^From\s+\S+\s+([a-zA-Z]{3}\s+){2}\d{1,2}\s+\d\d:\d\d/
- From abcd Mon Sep 01 12:33:02 1997
- 0: From abcd Mon Sep 01 12:33
- From abcd Mon Sep 1 12:33:02 1997
- 0: From abcd Mon Sep 1 12:33
- *** Failers
- No match
- From abcd Sep 01 12:33:02 1997
- No match
- /^12.34/s
- 12\n34
- 0: 12\x0a34
- 12\r34
- 0: 12\x0d34
- /\w+(?=\t)/
- the quick brown\t fox
- 0: brown
- /foo(?!bar)(.*)/
- foobar is foolish see?
- 0: foolish see?
- 1: foolish see
- 2: foolish se
- 3: foolish s
- 4: foolish
- 5: foolish
- 6: foolis
- 7: fooli
- 8: fool
- 9: foo
- /(?:(?!foo)...|^.{0,2})bar(.*)/
- foobar crowbar etc
- 0: rowbar etc
- 1: rowbar et
- 2: rowbar e
- 3: rowbar
- 4: rowbar
- barrel
- 0: barrel
- 1: barre
- 2: barr
- 3: bar
- 2barrel
- 0: 2barrel
- 1: 2barre
- 2: 2barr
- 3: 2bar
- A barrel
- 0: A barrel
- 1: A barre
- 2: A barr
- 3: A bar
- /^(\D*)(?=\d)(?!123)/
- abc456
- 0: abc
- *** Failers
- No match
- abc123
- No match
- /^1234(?# test newlines
- inside)/
- 1234
- 0: 1234
- /^1234 #comment in extended re
- /x
- 1234
- 0: 1234
- /#rhubarb
- abcd/x
- abcd
- 0: abcd
- /^abcd#rhubarb/x
- abcd
- 0: abcd
- /(?!^)abc/
- the abc
- 0: abc
- *** Failers
- No match
- abc
- No match
- /(?=^)abc/
- abc
- 0: abc
- *** Failers
- No match
- the abc
- No match
- /^[ab]{1,3}(ab*|b)/
- aabbbbb
- 0: aabbbbb
- 1: aabbbb
- 2: aabbb
- 3: aabb
- 4: aab
- 5: aa
- /^[ab]{1,3}?(ab*|b)/
- aabbbbb
- 0: aabbbbb
- 1: aabbbb
- 2: aabbb
- 3: aabb
- 4: aab
- 5: aa
- /^[ab]{1,3}?(ab*?|b)/
- aabbbbb
- 0: aabbbbb
- 1: aabbbb
- 2: aabbb
- 3: aabb
- 4: aab
- 5: aa
- /^[ab]{1,3}(ab*?|b)/
- aabbbbb
- 0: aabbbbb
- 1: aabbbb
- 2: aabbb
- 3: aabb
- 4: aab
- 5: aa
- / (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* # optional leading comment
- (?: (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- " (?: # opening quote...
- [^\\\x80-\xff\n\015"] # Anything except backslash and quote
- | # or
- \\ [^\x80-\xff] # Escaped something (something != CR)
- )* " # closing quote
- ) # initial word
- (?: (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* \. (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- " (?: # opening quote...
- [^\\\x80-\xff\n\015"] # Anything except backslash and quote
- | # or
- \\ [^\x80-\xff] # Escaped something (something != CR)
- )* " # closing quote
- ) )* # further okay, if led by a period
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* @ (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- | \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- ) # initial subdomain
- (?: #
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* \. # if led by a period...
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- | \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- ) # ...further okay
- )*
- # address
- | # or
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- " (?: # opening quote...
- [^\\\x80-\xff\n\015"] # Anything except backslash and quote
- | # or
- \\ [^\x80-\xff] # Escaped something (something != CR)
- )* " # closing quote
- ) # one word, optionally followed by....
- (?:
- [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] | # atom and space parts, or...
- \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) | # comments, or...
- " (?: # opening quote...
- [^\\\x80-\xff\n\015"] # Anything except backslash and quote
- | # or
- \\ [^\x80-\xff] # Escaped something (something != CR)
- )* " # closing quote
- # quoted strings
- )*
- < (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* # leading <
- (?: @ (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- | \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- ) # initial subdomain
- (?: #
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* \. # if led by a period...
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- | \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- ) # ...further okay
- )*
- (?: (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* , (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* @ (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- | \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- ) # initial subdomain
- (?: #
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* \. # if led by a period...
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- | \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- ) # ...further okay
- )*
- )* # further okay, if led by comma
- : # closing colon
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* )? # optional route
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- " (?: # opening quote...
- [^\\\x80-\xff\n\015"] # Anything except backslash and quote
- | # or
- \\ [^\x80-\xff] # Escaped something (something != CR)
- )* " # closing quote
- ) # initial word
- (?: (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* \. (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- " (?: # opening quote...
- [^\\\x80-\xff\n\015"] # Anything except backslash and quote
- | # or
- \\ [^\x80-\xff] # Escaped something (something != CR)
- )* " # closing quote
- ) )* # further okay, if led by a period
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* @ (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- | \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- ) # initial subdomain
- (?: #
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* \. # if led by a period...
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- | \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- ) # ...further okay
- )*
- # address spec
- (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* > # trailing >
- # name and address
- ) (?: [\040\t] | \(
- (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] | \( (?: [^\\\x80-\xff\n\015()] | \\ [^\x80-\xff] )* \) )*
- \) )* # optional trailing comment
- /x
- Alan Other <user\@dom.ain>
- 0: Alan Other <user@dom.ain>
- <user\@dom.ain>
- 0: user@dom.ain
- 1: user@dom
- user\@dom.ain
- 0: user@dom.ain
- 1: user@dom
- \"A. Other\" <user.1234\@dom.ain> (a comment)
- 0: "A. Other" <user.1234@dom.ain> (a comment)
- 1: "A. Other" <user.1234@dom.ain>
- 2: "A. Other" <user.1234@dom.ain>
- A. Other <user.1234\@dom.ain> (a comment)
- 0: Other <user.1234@dom.ain> (a comment)
- 1: Other <user.1234@dom.ain>
- 2: Other <user.1234@dom.ain>
- \"/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/\"\@x400-re.lay
- 0: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re.lay
- 1: "/s=user/ou=host/o=place/prmd=uu.yy/admd= /c=gb/"@x400-re
- A missing angle <user\@some.where
- 0: user@some.where
- 1: user@some
- *** Failers
- No match
- The quick brown fox
- No match
- /[\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- # optional leading comment
- (?:
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- # Atom
- | # or
- " # "
- [^\\\x80-\xff\n\015"] * # normal
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
- " # "
- # Quoted string
- )
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- (?:
- \.
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- # Atom
- | # or
- " # "
- [^\\\x80-\xff\n\015"] * # normal
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
- " # "
- # Quoted string
- )
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- # additional words
- )*
- @
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- )
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- # optional trailing comments
- (?:
- \.
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- )
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- # optional trailing comments
- )*
- # address
- | # or
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- # Atom
- | # or
- " # "
- [^\\\x80-\xff\n\015"] * # normal
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
- " # "
- # Quoted string
- )
- # leading word
- [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # "normal" atoms and or spaces
- (?:
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- |
- " # "
- [^\\\x80-\xff\n\015"] * # normal
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015"] * )* # ( special normal* )*
- " # "
- ) # "special" comment or quoted string
- [^()<>@,;:".\\\[\]\x80-\xff\000-\010\012-\037] * # more "normal"
- )*
- <
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- # <
- (?:
- @
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- )
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- # optional trailing comments
- (?:
- \.
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- )
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- # optional trailing comments
- )*
- (?: ,
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- @
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t]* )* # If comment found, allow more spaces.
- (?:
- [^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]+ # some number of atom characters...
- (?![^(\040)<>@,;:".\\\[\]\000-\037\x80-\xff]) # ..not followed by something that could be part of an atom
- |
- \[ # [
- (?: [^\\\x80-\xff\n\015\[\]] | \\ [^\x80-\xff] )* # stuff
- \] # ]
- )
- [\040\t]* # Nab whitespace.
- (?:
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: # (
- (?: \\ [^\x80-\xff] |
- \( # (
- [^\\\x80-\xff\n\015()] * # normal*
- (?: \\ [^\x80-\xff] [^\\\x80-\xff\n\015()] * )* # (special normal*)*
- \) # )
- ) # special
- [^\\\x80-\xff\n\015()] * # normal*
- )* # )*
- \) # )
- [\040\t…