export { hack as theme } from 'mdx-deck/themes' import { Appear, Notes } from 'mdx-deck' import { Box } from 'grid-styled'
import { Invert, Split } from 'mdx-deck/layouts'
export { components } from "mdx-deck-code-surfer"
/hel{2}o\\sworld/i
DISCLAIMER:
only javascript
"say hello world".exec(/hello\\s(world)/) => ["hello world", "world"]
----
* > exec
1[0] > text/string
1[4] > regexp
1[1:3, 5] > exec/match
1[8:14] > result
/hello\\sworld/.test("say hello world") => true
/hello\\sworld/.test("say hello fulano") => false
----
* > validation
1[0] > regex
1[4] > value
1[1:3, 5] > test
1 > true
3 > false
"say hello world".replace(/world/, "fulano") => "say hello fulano"
----
* > example
1[0] > value
1[4] > regexp - value to replace
1[7] > new value
1[12] > result
other disclaimer:
about "validation/test"
const cpf = /[0-9]{3}\.[0-9]{3}\.[0-9]{3}-[0-9]{2}/
cpf.test("443.443.443-23") => true
cpf.test("4432.4423.443-23") => false
----
* > sxample
1 > regexp
3:4 > structural
/[a-z0-9]+/gmi
/<pattern>/<modifiers>
new RegExp("<pattern>", "<modifiers>")
----
* > terminology
1[0,4] > delimeter
1[1:3] > pattern
1[5:7] > modifiers
3 > the same with class
Modifiers:
g m i
"hello world".replace(/o/, "x") => "hellx world"
"hello world".replace(/o/g, "x") => "hellx wxrld"
----
* > example
1 > example without modifier g
1[4] > regexp
1[7] > new value
1[12] > result
2 > example with modifier g
2[5] > regexp
2[13] > result
const value = "hello fulano\\nhello deltrano\\nhello foo\\nhello bar"
value.replace(/^(hello)\s([a-z]*)$/gm, "$1 wooow")
// hello wooow\\nhello wooow\\nhello wooow\\nhello wooow
----
* > example
1 > value
3 > replace
3[4] > regexp
3[7] > new value
5 > result
/hello\\sworld/.test("Hello World") => false
/hello\\sworld/i.test("Hello World") => true
----
* > example
1[0] > regex without modifier i
1[4] > value
1 > result
2[1:4] > regex with modifier i
2 > result
Plus Modifiers:
y u
Tips:
áâãéêíîóôõúûç
\\0[a-z][A-Z][^a-z][0-9].\\D\\w\\\.\?(...)+.?(?=!<=<!...)?*+\b\B
- Anchor
- Meta-sequences
- Quantifiers
- Group
- Characters
^ $ \\b \\B
/^a/
=> a
aaaaaa
/a$/
=> aaaaaaa
/a\\b/
= aaaa
-- aaaaa -- aaaa
/a\\b/g
= aaaa
-- aaaaa
-- aaaa
/a\\B/g
= a
aaa -- a
aaaa -- a
aaa
\\s \\S \\w \\W \\d \\D
/\\s/g
= aaaaa_
aaaaaa_
aaaaaaa_
aaa
/\\S/g
= aaaaa
aaaaaa
aaaaaaa
aaa
/\\w/g
= aaaa
12345aaaa
123123
/\\W/g
= aaaa12345
aaaa123123
/\\d/g
= aaaa12345
aaaa123123
/\\D/g
= aaaa
12345aaaa
123123
a* a+ a{3} a{3,} a{3, 6}
/ba*/g
= aaaaa3ba
3aaaaaa3baaaaaa
3b
/ba+/g
= aaaaa3ba
3aaaaaa3baaaaaa
3b
/ba?/g
= aaaaa3ba
3aaaaaa3ba
aaaaa3b
/a{3}/g
= a aa aaa
aaa
aa
/a{3,}/g
= a aa aaa
aaaaa
/a{3,4}/g
= a aa aaa
aaaa
a
[a] [a-z] [^a-z] [a-zA-Z] [0-9]
/b[aei]/g
= ba
ba
a be
be
e bi
bo bu
/b[aei]+/g
= ba
baa
be
bee
bi
bo bu
/bah[?!]/g
= bah bah?
bah!
bah
/b[^aei]/g
= ba baa be bee bi bo
o bu
u
/b[^aei]+/g
= ba baa be bee bi boo
buu
/bah[^?!]/g
= bah
bah? bah! bah
/h[a-z]* w[a-z]*/g
= hello world
1000
/h[a-z]* w[a-z]* [0-9]*/g
= hello world 1000
/h[^a-z]* w[^a-z]* [0-9]*/g
= hi world 100 h123 w123 10
(a|b) (?:) (?=) (?!) (?<=) (?<!)
short intro:
about group
/hello world/.test('hello world') => true
/hello (world)/.test('hello world') => true
"hello world".exec(/hello world/) => ["hello world"]
"hello world".exec(/hello (world)/) => ["hello world", "world"]
"hello world".replace(/hello world/, "hi world") => "hi world"
"hello world".replace(/hello (\w*)/, "hi $1") => "hi world"
"hello bar".replace(/hello (\w*)/, "hi $1") => "hi bar"
----
* > example
1:2 > test
4 > without group
5 > with group
5[10:15] > result
7 > without group
8:9 > with group
8[8] > replace with group
8[1],9[1] > dynamic text
8[13], 9[13] > dynamic result
/hi (foo|bar)/g
= hi boo hi foo
hi bar
/foo (?=bar)/g
= foo
bar foo bz foo
bar
/foo (?!bar)/g
= foo bar foo
bz foo bar
/(?<=foo) bar/g
= foo bar
for bar foo bar
/(?<!foo) bar/g
= foo bar for bar
foo bar
Plus group:
(?<name>)
/hello (?<planet>\\w*/g
/^(([^<>()[]\\.,;:s@"]+(.[^<>()[]\\.,;:s@"]+)*)|( ".+"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA -Z-0-9]+.)+[a-zA-Z]{2,}))$/
const date = /([0-9]{4}-[0-9]{2}-[0-9]{2})/
const date = new RegExp('([0-9]{4}-[0-9]{2}-[0-9]{2})')
const date = XRegExp(
`(?<year> [0-9]{4} ) - # year
(?<month> [0-9]{2} ) - # month
(?<day> [0-9]{2} ) # day`, 'x');
----
* > example
1 > regexp native
3 > regexp class
5:8 > xregexp