1
00:00:00,520 --> 00:00:04,470
All right guys so now we're going to do is we're going to take everything we've learned about regular

2
00:00:04,470 --> 00:00:11,520
expressions and we're going to implement a form with bootstrap that has some really nice validation.

3
00:00:11,520 --> 00:00:18,480
All right so we're going to get bootstrap dot com go to get started and from here there is a star template

4
00:00:18,510 --> 00:00:20,050
that we're going to grab.

5
00:00:20,400 --> 00:00:24,960
OK we're going to copy that in let's create a new folder for our little project here and we'll just

6
00:00:24,960 --> 00:00:37,380
call it user form and actually let's open that with this code or whatever text editor you're using.

7
00:00:37,380 --> 00:00:45,240
And then we're going to create our index HDMI file and we're going to paste that starter template in

8
00:00:45,600 --> 00:00:52,080
and let's be sure to go down to the bottom here and adding an extra script tag and give it a source

9
00:00:52,080 --> 00:00:53,650
of AppStore J.S..

10
00:00:53,980 --> 00:00:55,390
And before I forget.

11
00:00:55,430 --> 00:01:02,880
And then we'll create our chats file and now we're going to go back to index page HTML and create our

12
00:01:02,880 --> 00:01:04,920
little user interface.

13
00:01:04,920 --> 00:01:10,930
All right so it's clear out the page one here and let's put in a container.

14
00:01:11,070 --> 00:01:17,460
Again I'm not going to you know go over the bootstrap syntax really it's it's pretty simple we're just

15
00:01:17,460 --> 00:01:24,450
adding a grid with a six column divs So we're going to say call em D6 and we want to move everything

16
00:01:24,450 --> 00:01:27,930
to the middle so we're going to use M-x dash auto.

17
00:01:28,380 --> 00:01:35,460
And then inside here loads put in each one and we'll just see a user form and then under the age one

18
00:01:35,460 --> 00:01:37,370
we'll put our form.

19
00:01:37,620 --> 00:01:41,210
All right doesn't need an action doesn't need anything.

20
00:01:41,640 --> 00:01:49,950
And then we'll put a class of form group which is standard bootstrap syntax will put a label label doesn't

21
00:01:49,950 --> 00:01:51,600
need any for attribute.

22
00:01:51,600 --> 00:01:56,220
This will be for the name and then we want an input

23
00:01:58,590 --> 00:02:10,820
input it will be 10 type text and then we want to give it a class of form control OK given an ID of

24
00:02:10,830 --> 00:02:15,450
the name of the non-capital and then placeholder

25
00:02:18,000 --> 00:02:19,960
name.

26
00:02:20,130 --> 00:02:20,480
All right.

27
00:02:20,490 --> 00:02:29,380
And then underneath that we're going to have a class called invalid dash feedback.

28
00:02:29,520 --> 00:02:29,880
All right.

29
00:02:29,880 --> 00:02:42,760
And then for the the message here I'm going to say name must be between two and 10 characters.

30
00:02:42,930 --> 00:02:43,310
All right.

31
00:02:43,320 --> 00:02:49,320
Now if I save this and we open this let's use our live server here.

32
00:02:50,640 --> 00:02:54,000
You'll see that this error message is not showing here.

33
00:02:54,120 --> 00:02:59,970
And that's that's what how it's supposed to be the only way that this this message shows is if your

34
00:02:59,970 --> 00:03:05,190
input has a class call is invalid.

35
00:03:05,190 --> 00:03:11,760
OK now if I save this what happens is the input turns red and then we get this red message down here

36
00:03:11,760 --> 00:03:13,590
which is whatever we put here.

37
00:03:13,620 --> 00:03:19,560
So from within it within our javascript we have to add this class dynamically if we want to show this

38
00:03:19,590 --> 00:03:19,950
error.

39
00:03:19,950 --> 00:03:21,120
So just remember that.

40
00:03:21,130 --> 00:03:22,890
OK but we want to remove it.

41
00:03:22,980 --> 00:03:26,460
Initially we want to dynamically added if there's an error.

42
00:03:26,730 --> 00:03:30,540
Ok that's how that's how bootstrap validation works.

43
00:03:30,540 --> 00:03:35,760
So what I'm going to do now is just copy the form group which ends right here so we're just going to

44
00:03:35,760 --> 00:03:37,410
grab that.

45
00:03:37,890 --> 00:03:41,540
And we want three more fields.

46
00:03:41,670 --> 00:03:49,690
So after name we're going to have the zip code and we're going to change the placeholder.

47
00:03:49,800 --> 00:03:53,200
We're going to change the ID to zip.

48
00:03:53,280 --> 00:04:02,190
We're going to change the message to say enter a valid zip code.

49
00:04:03,030 --> 00:04:03,390
All right.

50
00:04:03,390 --> 00:04:10,350
And then we're going to do an e-mail and we're going to change the placeholder to e-mail and change

51
00:04:10,350 --> 00:04:19,860
the ID to e-mail and change the message to enter a valid e-mail.

52
00:04:19,860 --> 00:04:25,290
Now you're probably already thinking right now well why don't we just add the type e-mail right here

53
00:04:25,290 --> 00:04:30,460
because that will automatically give us validation of freezing age T.M. 5.

54
00:04:30,480 --> 00:04:35,030
Now I'm not doing that because I want to teach you how to do it without doing now.

55
00:04:35,040 --> 00:04:40,770
I want to teach you how to do it with regular expressions which is what we had to do in the old days

56
00:04:40,770 --> 00:04:47,400
before a small 5 before this feature where we could just say type email and it's just a good exercise

57
00:04:47,400 --> 00:04:48,660
to have.

58
00:04:48,660 --> 00:04:57,750
All right so and he may be using x x x h t m l or some some reason why you can't use that functionality.

59
00:04:57,770 --> 00:05:04,370
All right so down here we're going to say phone the phone number and we'll change the placeholder to

60
00:05:05,060 --> 00:05:07,970
the phone number or change the ID

61
00:05:10,520 --> 00:05:18,510
and change the message here to enter a valid phone.

62
00:05:18,510 --> 00:05:18,890
All right.

63
00:05:18,890 --> 00:05:31,580
And then we'll just put a submit button say in put submit value submit and give the class a couple of

64
00:05:31,580 --> 00:05:42,300
classes between between primary and between block and save and now you have a form.

65
00:05:42,340 --> 00:05:49,310
Now the way that we want to do this or that I want to do this is every time we put something in here

66
00:05:49,370 --> 00:05:51,120
when we cause the blur event.

67
00:05:51,170 --> 00:05:55,550
So when we click out of the form that's when I want the validation to go off.

68
00:05:55,610 --> 00:06:01,430
I don't want to simply make it so that when we submit the form all the stuff shows I want it to be dynamic

69
00:06:01,430 --> 00:06:07,220
where we leave the form field and it tells us if it's if it's right or wrong.

70
00:06:07,550 --> 00:06:14,330
OK so we're going to go to our at J s here and we're going to first of all just create a bunch of event

71
00:06:14,330 --> 00:06:25,340
listeners for these input fields so it's a document Daut get element by the name you want to add an

72
00:06:25,340 --> 00:06:26,400
event listener.

73
00:06:26,600 --> 00:06:30,060
And we want the blur event.

74
00:06:30,200 --> 00:06:35,220
All right so we're going to call validate the name.

75
00:06:35,720 --> 00:06:38,450
OK and I'm just going to add a bunch of event listeners here.

76
00:06:38,450 --> 00:06:40,870
Let's just put a comment here.

77
00:06:41,140 --> 00:06:45,890
Say form blur event

78
00:06:48,540 --> 00:06:50,980
listeners.

79
00:06:52,520 --> 00:06:55,050
So do three more.

80
00:06:55,100 --> 00:07:03,140
We have name we have Zipp that's going to call validate Zipp e-mail.

81
00:07:03,260 --> 00:07:11,810
It's going to call validate e-mail and phone is going to call validate phone.

82
00:07:11,900 --> 00:07:12,410
All right.

83
00:07:12,710 --> 00:07:15,690
So let's go ahead and create these functions

84
00:07:28,430 --> 00:07:31,560
right so this will be Zipp

85
00:07:38,510 --> 00:07:43,510
OK so save that let's open up our consul over here.

86
00:07:43,730 --> 00:07:45,380
Can I add an event listener.

87
00:07:45,400 --> 00:07:46,330
No.

88
00:07:46,610 --> 00:07:47,920
I have a capital P.

89
00:07:47,960 --> 00:07:50,080
That's probably what they're talking about.

90
00:07:50,540 --> 00:07:52,770
All right so validate name.

91
00:07:52,850 --> 00:07:55,300
So this is going to happen on the blur of it.

92
00:07:55,340 --> 00:08:01,820
Now first thing we want to do is get the value of the name field so let's create a variable called name

93
00:08:01,820 --> 00:08:06,160
and set it to document Daut get element by the

94
00:08:10,020 --> 00:08:11,300
name.

95
00:08:12,310 --> 00:08:21,990
And let's go ahead and create a variable for our regular expression that we want to match.

96
00:08:22,080 --> 00:08:24,180
So we want our slashes.

97
00:08:24,180 --> 00:08:31,830
And what I want to do is I want to I want this to be the name should be two letters between Ainslee

98
00:08:32,700 --> 00:08:37,230
capital or lower case and it should be between 2 and 10.

99
00:08:37,230 --> 00:08:39,530
I know that 10 is kind of short.

100
00:08:39,540 --> 00:08:45,000
I mean you know a lot of names could be longer than 10 but this is just an example you can change it

101
00:08:45,000 --> 00:08:45,540
if you want.

102
00:08:45,540 --> 00:08:48,420
I just don't want to type in a million characters to test it.

103
00:08:48,720 --> 00:08:53,130
So what we're going to do is put in starts with.

104
00:08:53,160 --> 00:09:00,240
So remember starts with is the carrot symbol then we want our brackets and we're going to say this can

105
00:09:00,240 --> 00:09:10,290
be a to z lowercase or a to z uppercase and we want that we want to use a quantifier here we want to

106
00:09:10,290 --> 00:09:16,480
say between two and 10 and then we want to end it.

107
00:09:16,740 --> 00:09:19,110
OK so use our dollar sign.

108
00:09:19,110 --> 00:09:19,520
That's it.

109
00:09:19,530 --> 00:09:21,100
That's our regular expression.

110
00:09:21,390 --> 00:09:25,380
So we're going to use to actually evaluate this

111
00:09:30,300 --> 00:09:38,370
is I'm going to say if not read don't test them when you use the test method and then pass in the name

112
00:09:38,370 --> 00:09:43,200
Daut value k dot value will get the actual input we add.

113
00:09:43,200 --> 00:09:45,430
So we're testing that.

114
00:09:46,920 --> 00:09:57,530
And then we're going to if that if if that is invalid then remember we need to add that is invalid class

115
00:09:57,860 --> 00:10:07,740
to this this input in order to see the message and to make this read so we can just say name Daut class

116
00:10:07,740 --> 00:10:16,160
list Daut add and then we can simply add a class will say is Dasch invalid.

117
00:10:17,150 --> 00:10:17,660
OK.

118
00:10:17,670 --> 00:10:23,780
And then if not else then we want to make sure that this is removed.

119
00:10:23,850 --> 00:10:28,650
So we're going to say Daut remove is invalid and that's it.

120
00:10:28,650 --> 00:10:29,900
So let's try it out.

121
00:10:30,150 --> 00:10:36,090
So we'll go ahead and we'll go in here we'll put in one character and then cause the blur event and

122
00:10:36,090 --> 00:10:39,580
then we go name must be between two and 10 characters.

123
00:10:39,630 --> 00:10:48,700
If I put in whatever less than 10 but more than 2 it's OK if I go in I past 10.

124
00:10:49,230 --> 00:10:50,770
It's not OK.

125
00:10:50,780 --> 00:10:58,530
All right so it's kind of I would say one two three four five six seven eight nine OK nine works 10

126
00:10:58,710 --> 00:11:02,020
works 11 does not work.

127
00:11:02,370 --> 00:11:04,880
All right so that's a first validation.

128
00:11:05,430 --> 00:11:10,020
So the next one for the zip code they're all going to be formatted like this.

129
00:11:10,020 --> 00:11:12,520
I'm just going to copy this.

130
00:11:12,850 --> 00:11:16,140
All are changing here really is the expression in the field.

131
00:11:16,140 --> 00:11:21,790
So this is going to be the Ziph and we're going to get it.

132
00:11:21,870 --> 00:11:29,170
The idea of Ziph in for our regular expression remember a zip code can be it's five.

133
00:11:29,180 --> 00:11:31,170
Now I'm going by US ZIP codes.

134
00:11:31,170 --> 00:11:34,430
I don't I don't know any other countries zip code formats.

135
00:11:34,470 --> 00:11:38,940
You guys can maybe that's a little challenge if you guys are outside of the U.S. and you want to figure

136
00:11:38,940 --> 00:11:39,280
it out.

137
00:11:39,300 --> 00:11:41,280
Maybe that's a little challenge you can do.

138
00:11:41,540 --> 00:11:48,210
But in the U.S. we have a five digit zip code and sometimes we add dash and then four more numbers on

139
00:11:48,210 --> 00:11:49,290
the end.

140
00:11:49,320 --> 00:11:51,030
So that's what we're going to do.

141
00:11:51,060 --> 00:11:54,930
We're going to have five numbers with the optional dash 4.

142
00:11:54,960 --> 00:12:08,730
So let's get rid of this and let's say we want to start with 0 0 through 9 and we want five five of

143
00:12:08,730 --> 00:12:14,840
those five numbers and then what I want to do is group together.

144
00:12:14,850 --> 00:12:25,200
So remember parentheses group I want to group the dash and then 0 through 9 again and we want four of

145
00:12:25,200 --> 00:12:29,300
those so we're going to say quite a fire for now.

146
00:12:29,310 --> 00:12:34,790
This is all I want to be optional and remember the question mark makes this optional.

147
00:12:34,950 --> 00:12:38,970
So it's going to take everything in this group here and make it optional.

148
00:12:38,970 --> 00:12:39,290
All right.

149
00:12:39,290 --> 00:12:43,160
And then they just want to end with a money sign.

150
00:12:43,380 --> 00:12:51,690
So let's go ahead and do Zipp taught value change this to Zipp and this does.

151
00:12:51,810 --> 00:12:52,720
And let's try it.

152
00:12:52,740 --> 00:13:00,160
So let's put in just a 3:3 that doesn't work what's two three three four four doesn't work.

153
00:13:00,180 --> 00:13:00,780
One more.

154
00:13:00,780 --> 00:13:01,910
That's five.

155
00:13:01,920 --> 00:13:03,510
That works.

156
00:13:03,510 --> 00:13:03,810
All right.

157
00:13:03,810 --> 00:13:07,440
Now if I just do a dash that's not going to work.

158
00:13:07,710 --> 00:13:10,050
If I do dash three not going to work.

159
00:13:10,050 --> 00:13:12,020
It needs to be four numbers.

160
00:13:12,240 --> 00:13:13,450
That works.

161
00:13:13,470 --> 00:13:15,780
If I put one more in doesn't work.

162
00:13:15,900 --> 00:13:20,700
So we can either do a 5 digit zip code or we can do this full format.

163
00:13:20,700 --> 00:13:24,580
I'm not sure what that's called but yes.

164
00:13:24,600 --> 00:13:27,530
So that's our zip code validation.

165
00:13:27,530 --> 00:13:27,960
All right.

166
00:13:27,990 --> 00:13:32,610
So you can see that these are pretty powerful these regular expressions and you can do a lot more intricate

167
00:13:32,610 --> 00:13:34,460
things than this.

168
00:13:34,470 --> 00:13:38,780
So now we're going to do the e-mail so I'm going to copy this

169
00:13:42,500 --> 00:13:54,440
and let's change this to email.

170
00:13:56,160 --> 00:13:58,900
All right so this is going to be a little more difficult.

171
00:13:59,290 --> 00:14:02,080
Let's go ahead and get rid of this.

172
00:14:02,170 --> 00:14:10,330
So we want the carrot to start and we're going to end with the money sign and then hear what we want

173
00:14:10,420 --> 00:14:21,100
is to group together a bunch of stuff and we want to do brackets and member an e-mail address is something

174
00:14:21,130 --> 00:14:22,870
at something dot com.

175
00:14:22,870 --> 00:14:41,440
So we want letters or numbers so we can do A to Z A to Z A to capital Z we can do zero to nine and we

176
00:14:41,440 --> 00:14:52,480
can do underscore and then we're going to do we want a literal dash so we're going to do backslash Dasch

177
00:14:53,160 --> 00:14:56,870
backslash and then a literal door.

178
00:14:57,460 --> 00:14:59,710
OK I think that's right.

179
00:15:00,460 --> 00:15:06,640
When you start getting into these like stretch expressions it can get pretty pretty confusing.

180
00:15:06,850 --> 00:15:12,010
But we want to be able to have letters numbers underscores dashes and dots.

181
00:15:12,010 --> 00:15:17,610
All right and if we don't use the escape character here then we're going to run into some trouble.

182
00:15:17,950 --> 00:15:18,240
OK.

183
00:15:18,250 --> 00:15:23,300
We also want to put the plus here because we want to search for more than one.

184
00:15:23,310 --> 00:15:23,660
All right.

185
00:15:23,680 --> 00:15:26,510
Then we want a literal at sign.

186
00:15:26,590 --> 00:15:32,560
So we're going to go outside of the group and we're going to just put in at K and that's a little character.

187
00:15:32,800 --> 00:15:34,290
Then we want another group.

188
00:15:34,570 --> 00:15:35,040
OK.

189
00:15:35,050 --> 00:15:38,460
And this group is going to be the same thing.

190
00:15:38,530 --> 00:15:44,150
So I'm just going to copy everything inside these parentheses and put them inside here.

191
00:15:44,500 --> 00:15:46,480
So could be something at.

192
00:15:46,510 --> 00:15:51,530
So let's say Brad at G-mail then we want a literal door.

193
00:15:52,450 --> 00:15:57,930
Crisis we're going to go outside of the parentheses here and we want a literal door so we're going to

194
00:15:57,930 --> 00:16:02,590
use We're going to escape it with a backslash OK and put our dog.

195
00:16:03,000 --> 00:16:04,650
Then we won our last group.

196
00:16:04,680 --> 00:16:06,720
So another set of parentheses.

197
00:16:06,840 --> 00:16:10,960
And this is going to be the dot com dot net dot whatever.

198
00:16:11,040 --> 00:16:13,770
And it can be up to five I think.

199
00:16:13,800 --> 00:16:19,950
I think five is the longest TLG that that's available.

200
00:16:19,950 --> 00:16:21,130
I know there's media.

201
00:16:21,210 --> 00:16:34,180
So Media Day five should be the longest So let's say in here we want it can be a to z A to Z no numbers

202
00:16:34,180 --> 00:16:39,490
that can't be you know one dot one or something like that.

203
00:16:40,320 --> 00:16:47,250
And then we want our quantifier which can be from two to five because you have like Dot me which is

204
00:16:47,250 --> 00:16:54,840
two and then like Dot media which is five I don't think there's anything longer than that at least in

205
00:16:54,840 --> 00:16:58,050
this case that we're going to accept.

206
00:16:58,170 --> 00:17:00,450
So that should be it.

207
00:17:00,540 --> 00:17:04,860
I believe that is that's a regular expression for an email address.

208
00:17:04,980 --> 00:17:05,900
So let's try it.

209
00:17:05,900 --> 00:17:13,630
We'll save We'll go over here we'll say test doesn't work let's say test at doesn't work.

210
00:17:13,740 --> 00:17:20,660
Test it test doesn't work Dawn com does work.

211
00:17:20,680 --> 00:17:21,630
All right.

212
00:17:21,630 --> 00:17:31,360
We say dot dot code which is another extension outworks dot media.

213
00:17:31,710 --> 00:17:33,050
That works right.

214
00:17:33,050 --> 00:17:36,010
So our email address is now validating.

215
00:17:36,480 --> 00:17:42,380
Come to think of it I think there are longer oldies but we're just going to keep it at five.

216
00:17:42,390 --> 00:17:44,830
So now for the phone number.

217
00:17:45,180 --> 00:17:48,450
So let's go ahead and copy all of this

218
00:17:51,140 --> 00:17:53,660
and let's change this to a phone

219
00:17:56,000 --> 00:18:02,020
on our expression I'm going to clear it out except for the beginning and end.

220
00:18:02,330 --> 00:18:03,470
This would be fun

221
00:18:08,350 --> 00:18:10,540
and fun.

222
00:18:10,550 --> 00:18:16,730
All right so our expression for the phone is going to be.

223
00:18:17,680 --> 00:18:26,240
I want to I want to except a lot of different formats so we might do 5 5 5 5 5 5 5 5 5 5.

224
00:18:26,230 --> 00:18:35,920
We might do that we might do a door in-between like that we might do a space in between and we might

225
00:18:35,920 --> 00:18:38,810
use parentheses like that.

226
00:18:38,950 --> 00:18:39,220
All right.

227
00:18:39,220 --> 00:18:46,270
So I want to accept all of those formats or even just all of the numbers together you know like that.

228
00:18:46,270 --> 00:18:48,070
So this is going to be quite a long one.

229
00:18:48,070 --> 00:18:51,820
So let's go ahead and let's do the parentheses now.

230
00:18:51,850 --> 00:18:54,490
Now we want literal parentheses.

231
00:18:54,640 --> 00:18:59,420
So we want to back backslash literal parentheses.

232
00:18:59,660 --> 00:19:07,500
And inside here we want see and actually the parentheses need to be optional.

233
00:19:07,500 --> 00:19:09,440
So we want to question mark.

234
00:19:09,590 --> 00:19:13,920
Remember a question mark makes whatever is before it optional.

235
00:19:13,920 --> 00:19:19,720
And then after the question mark we're going to do a digit so forward slash D.

236
00:19:19,770 --> 00:19:22,320
So it's going to be a digit and we want three of those.

237
00:19:22,320 --> 00:19:25,100
We're going to use a qualifier of three.

238
00:19:25,110 --> 00:19:25,470
All right.

239
00:19:25,470 --> 00:19:32,040
And then we're going to do another backslash parentheses because this is in the literal parentheses.

240
00:19:32,130 --> 00:19:37,620
OK it's not you it's not part of a group it's literal parentheses because we want them to be able to

241
00:19:37,620 --> 00:19:39,420
add them in here.

242
00:19:39,420 --> 00:19:47,730
All right so that's the first part and then we want to be able to separate with an optional dash Daut

243
00:19:47,940 --> 00:19:49,280
or space.

244
00:19:49,650 --> 00:19:59,130
So after the parentheses right here we're going to say oh I forgot the question mark because again this

245
00:19:59,130 --> 00:20:01,290
is the parentheses is optional.

246
00:20:01,770 --> 00:20:03,750
But after that we're going to put our brackets.

247
00:20:03,750 --> 00:20:08,280
We're going to see this can be a dash a door or a space.

248
00:20:08,490 --> 00:20:13,170
And that's going to be optional as well because like I said I want them to be able to just put the straight

249
00:20:13,170 --> 00:20:15,260
number in.

250
00:20:15,270 --> 00:20:16,710
All right so that's optional.

251
00:20:16,920 --> 00:20:23,340
Then we're going to do another digit or another set of three digits like that.

252
00:20:23,610 --> 00:20:30,360
And then again brackets with dash dot space which is optional.

253
00:20:31,200 --> 00:20:35,010
And then another set of digits.

254
00:20:35,010 --> 00:20:40,580
This time it will be four digits and they think that's it.

255
00:20:40,610 --> 00:20:41,770
So that should do it.

256
00:20:42,150 --> 00:20:43,490
So let's save that.

257
00:20:43,680 --> 00:20:44,640
Let's go down here.

258
00:20:44,650 --> 00:20:50,590
It's 2 5 5 5 dash 5 5 5 5.

259
00:20:50,640 --> 00:20:54,720
That works if I take away one of those fives does not work.

260
00:20:55,080 --> 00:20:58,800
If I do parentheses

261
00:21:01,350 --> 00:21:02,910
that works.

262
00:21:02,910 --> 00:21:15,680
If I do know space or know anything there that works if I do a lot here in here that works.

263
00:21:16,010 --> 00:21:18,010
If I do.

264
00:21:18,410 --> 00:21:18,830
What else.

265
00:21:18,830 --> 00:21:26,620
Yeah just a dot dash in space that works OK whether we have parentheses or not.

266
00:21:27,010 --> 00:21:27,310
It's

267
00:21:31,210 --> 00:21:31,790
OK.

268
00:21:31,810 --> 00:21:37,980
And even if I just do all the numbers like that that also works if I add an extra number does not work.

269
00:21:37,990 --> 00:21:44,620
So that's a pretty good regular expression that's a pretty good pattern for a phone number.

270
00:21:44,620 --> 00:21:46,960
All right guys I know that this is kind of a long one.

271
00:21:46,960 --> 00:21:49,300
Hopefully you learn something from it.

272
00:21:49,300 --> 00:21:55,240
Feel free to use these expressions in your code when you're doing validation and that's it.

273
00:21:55,240 --> 00:21:56,070
Thanks for watching.

