1
Dynamic HTMLClient-Side Scripting with VBScript
2
Introduction
• Visual Basic Script (VBScript)– Subset of Microsoft Visual Basic
– IE contains VBScript scripting engine (interpreter)
– Similar to JavaScript• JavaScript used more for client-side scripting
– VBScript de facto language for ASP (Active Server Pages)
3
Operators
• VBScript– Not case-sensitive
– Provides arithmetic operators, logical operators, concatenation operators, comparison operators and relational operators
– Arithmetic operators• Similar to JavaScript arithmetic operators
• Division operator– \– Returns integer result
• Exponentiation operator– ^– Raises a value to a power
4
Operators
• Arithmetic operatorsVBScript operation Arithmetic
operator Algebraic expression
VBScript expression
Addition + x + y x + y Subtraction - z – 8 z – 8 Multiplication * yb y * b Division (floating-point) / v u or <Anchor0> v / u
Division (integer) \ none u \ u
Exponentiation ^ qp Q ^ p
Negation - -e -e
Modulus Mod q mod r q Mod r
5
Operators
• Comparison operators
Standard algebraic equality operator or relational operator
VBScript comparison operator
Example of VBScript condition
Meaning of VBScript condition
= = d = g d is equal to g <> s <> r s is not equal to r > > y > x y is greater than x < < p < m p is less than m >= c >= z c is greater than or equal to z <= m <= s m is less than or equal to s
6
Operators
– Comparison operators• Only symbols for equality operator (=) and
inequality operator (<>) differ from JavaScript
• Can also be used to compare strings
– Logical operators•And (logical AND)•Or (logical OR)•Not (logical negation)•Imp (logical implication)•Xor (exclusive OR)•Eqv (logical equivalence)
• Not short-circuit; both conditions always evaluated
7
Operators
• Truth tables for VBScript logical operators
Truth tables for VBScript Logical Operators
Logical And: True And True = True True And False = False False And True = False False And False = False
Logical Or: True Or True = True True Or False = True False Or True = True False Or False = False
Logical Imp: True Imp True = True True Imp False = False False Imp True = True False Imp False = True
Logical Eqv: True Eqv True = True True Eqv False = False False Eqv True = False False Eqv False = True
Logical Xor: True Xor True = False True Xor False = True False Xor True = True False Xor False = False
Logical Not: Not True = False Not False = True
8
Operators
• String concatenation– Plus sign, +– Ampersand, &
• Formally called string concatenation operator
– If both operands are strings, + and & can be used interchangeably• s3 = s1 & s2• s3 = s1 + s2
– If varying data types, use ampersand (&)• Error: s1 = “hello” + 22
9
Data Types and Control Structures
• VBScript has only one data type:– Variant
• Capable of storing different types of data
– Variant subtypes
• Variable names– Cannot be keywords
– Must begin with a letter
– Max length: 255 characters
– Letters, digits (0-9) and underscores
• OptionExplicit statement– Requires variables to be declared before use
10
Data Types and Control Structures
• VBScript variant subtypes
Subtype Range/Description Boolean True or False
Byte Integer in the range 0 to 255
Currency –922337203685477.5808 to 922337203685477.5807
Date/Time 1 January 100 to 31 December 9999 0:00:00 to 23:59:59.
Double –1.79769313486232E308 to –4.94065645841247E–324 (negative) 1.79769313486232E308 to 4.94065645841247E–324 (positive)
Empty Uninitialized. This value is 0 for numeric types (e.g., double), False for booleans and the empty string (i.e., "") for strings.
Integer –32768 to 32767
Long –2147483648 to 2147483647
Object Any object type.
Single –3.402823E38 to –1.401298E–45 (negative) 3.402823E38 to 1.401298E–45 (positive)
String 0 to ~2000000000 characters.
11
Data Types and Control Structures
• VBScript control structures– Every control structure begins and ends with one or
more keywords (not curly braces as in JavaScript)
– VBScript does not use statement terminator• JavaScript uses semicolons
– Parentheses around conditions optional – True: variant subtype boolean True or considered
non-zero– False: variant subtype boolean False or considered
0
12
Data Types and Control Structures
• Comparing VBScript control structures to JavaScript control structures
J avaScript Control Structure
VBScript Control Structure Equivalent
sequence sequence if If/Then/End If if/else If/Then/Else/End If while While/Wend or Do While/Loop
for For/Next do/while Do/Loop While
switch Select Case/End Select
none Do Until/Loop
none Do/Loop Until
13
Data Types and Control Structures
• Comparing JavaScript’s if structure to VBScript’s If structure
J avaScript VBScript 1 if ( s == t ) 2 u = s + t; 3 else if ( s > t ) 4 u = r; 5 else 6 u = n;
1 If s = t Then 2 u = s + t 3 ElseIf s > t Then 4 u = r 5 Else 6 u = n 7 End If
14
Data Types and Control Structures
• Comparing JavaScript’s switch with VBScript’s Select Case
J avaScript VBScript 1 switch ( x ) { 2 case 1: 3 alert("1"); 4 break; 5 case 2: 6 alert("2"); 7 break; 8 default: 9 alert("?"); 10 }
1 Select Case x 2 Case 1 3 Call MsgBox("1") 4 Case 2 5 Call MsgBox("2") 6 Case Else 7 Call MsgBox("?") 8 End Select
15
Data Types and Control Structures
• Comparing JavaScript’s while to VBScript’s Do Until
• Comparing JavaScript’s Do/While to VBScript’s Do Loop/Until
J avaScript VBScript 1 while ( !( x == 10 ) ) 2 ++x;
1 Do Until x = 10 2 x = x + 1 3 Loop
J avaScript VBScript 1 do { 2 ++x; 3 } while ( !( x == 10 ) );
1 Do 2 x = x + 1 3 Loop Until x = 10
16
Data Types and Control Structures
• Comparing JavaScript’s for to VBScript’s For
J avaScript VBScript
1 x = 8; 2 for ( y = 1; y < x; y++ ) 3 x /= 2;
1 x = 8 2 For y = 1 To x 3 x = x \ 2 4 Next
17
Data Types and Control Structures
– Select Case/End Select• Does not require break type statement
– VBScript structures without direct JavaScript equivalents:• Do Until/Loop• Do/Loop Until• Loop until condition becomes True
– Exit Do • Immediate exit from Do While/Loop, Do/Loop While, Do Until/Loop or Do/Loop Until
– Exit For• Immediate exit from For/Next
– For loop• Optional Step keyword to increment or decrement
Outline
1. For repetition structure with keyword Step
1 ’ VBScript
2 For y = 2 To 20 Step 2
3 Call MsgBox( "y = " & y )
4 Next
19
VBScript Functions• Predefined functions
– Variant functions• IsEmpty
– Returns True if variant not initialized
– Math functions• Cos, Sin, etc.
– Take arguments in radians
– radians = degrees π/180
– InputBox• Displays dialog in which user can input data
– MsgBox• Displays message dialog
– VBScript functions often take optional arguments
– Formatting functions• FormatCurrency, FormatDateTime, etc.
20
VBScript Functions
– Functions for getting info about scripting engine• ScriptEngine
– Returns “Jscript”, “VBScript” or “VBA”• ScriptEngineBuildVersion
– Returns current build version; ID number for current release
• ScriptEngineMajorVersion– Returns major version number for script engine
• ScriptEngineMinorVersion– Returns minor release number
• Line continuation character– Underscore character, _– Statements cannot extend beyond current line without
character
21
VBScript Functions
• Some variant functionsFunction Variant subtype
returned Description
IsArray Boolean Returns True if variant subtype is an array, otherwise False.
IsDate Boolean Returns True if variant subtype is a date or time, otherwise False.
IsEmpty Boolean Returns True if the variant subtype is Empty (i.e., has not been explicitly initialized by the programmer) and False otherwise.
IsNumeric Boolean Returns True if variant subtype is numeric, otherwise False.
IsObject Boolean Returns True if variant subtype is an object, otherwise False.
TypeName String Returns a string that provides subtype information. Some strings returned are "Byte", "Integer", "Long", "Single", "Double", "Date", "Currency", "String", "Boolean" and "Empty".
VarType Integer Returns a value indicating the subtype (e.g., 0 for Empty, 2 for integer, 3 for long, 4 for single, 5 for double, 6 for currency, 7 for date/time, 8 for string, 9 for object, etc.).
22
VBScript Functions
• VBScript math functionsFunction Description Example
Abs(x) Absolute value of x Abs(-7) is 7 Abs(0) is 0 Abs(76) is 76
Atn(x) Trigonometric arctangent of x (in radians) Atn(1)*4 is 3.1415926 Cos(x) Trigonometric cosine of x (in radians) Cos(0) is 1 Exp(x) Exponential function ex
Exp(1.0) is 2.71828 Exp(2.0) is 7.38906
Int(x) Returns the whole-number part of x. Int rounds to the next smallest number.
Int(-5.3) is –6 Int(0.893) is 0 Int(76.45) is 76
Fix(x) Returns the whole-number part of x (Note: Fix and Int are different. When x is negative, Int rounds to the next smallest number, while Fix rounds to the next-largest number)
Fix(-5.3) is –5 Fix(0.893) is 0 Fix(76.45) is 76
Log(x) Natural logarithm of x (base e) Log(2.718282) is 1.0 Log(7.389056) is 2.0
23
VBScript Functions
• VBScript math functions (continued)Function Description Example
Rnd() Returns a pseudo-random floating-point number in the range 0 £ Rnd < 1. Call function Randomize once before calling Rnd to get a different sequence of random numbers each time the program is run.
Call Randomize ... z = Rnd()
Round(x, y) Rounds x to y decimal places. If y is omitted, x is returned as an Integer.
Round(4.844) is 5 Round(5.7839, 2) is 5.78
Sgn(x) Sign of x Sgn(-1988) is –1 Sgn(0) is 0 Sgn(3.3) is 1
Sin(x) Trigonometric sine of x (in radians) Sin(0) is 0 Sqr(x) Square root of x Sqr(900.0) is 30.0
Sqr(9.0) is 3.0 Tan(x) Trigonometric tangent of x (in radians) Tan(0) is 0
24
VBScript Example Programs
• <script> tag– Used to set the language of an HTML document
• Option Explicit– Forces all variables to be declared
• Procedures– VBScript’s equivalent of a function in JavaScript– Sub
• Procedure that does not return value
• Ended with End Sub
• Const– Used to create constants
Outline
1.1 Set language to VBScript
1.2OptionExplicit statement
1.3 Define procedure OnClick for the cmAdd button
1.4 Use CInt to convert input values from string subtype to integer subtype
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 2<HTML>3<!--Fig. 24.15: addition.html -->
5<HEAD>6<TITLE>Our first VBScript</TITLE>78<SCRIPT LANGUAGE = "VBScript">9<!--10 Option Explicit11 Dim intTotal1213 Sub cmdAdd_OnClick()14 Dim intValue15 16 intValue = InputBox("Enter an integer", "Input Box", , _17 1000, 1000)18 intTotal = CInt( intTotal ) + CInt( intValue )19 Call MsgBox("You entered " & intValue & _20 "; total so far is " & intTotal, , "Results")21 End Sub22-->23</SCRIPT>24</HEAD>2526<BODY>27Click the button to add an integer to the total.28<HR>29<FORM>30<INPUT NAME = "cmdAdd" TYPE = "BUTTON" 31 VALUE = "Click Here to Add to the Total">32</FORM>33</BODY>34</HTML>
26
Adding integers on a Web page using VBScript
Input dialog
Message dialog
27
VBScript Example Programs
• <script> tag’s attributes– for attribute
• Indicates the HTML component on which the script operates
– event attribute• Indicates the event to which the script should respond
– language attribute• Specifies the scripting language
Outline
1.1 Create form with pulldown menu
1.2 Script response to user’s selecting an option in the menu
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<HTML>
3<!-- Fig. 24.16: site.html -->
4
5<HEAD>
6 <TITLE>Select a site to browse</TITLE>
7</HEAD>
8
9<BODY>
10Select a site to browse<P>
11<HR>
12<FORM>
13<SELECT NAME = "SiteSelector" SIZE = "1">
14
15 <OPTION VALUE = "http://www.deitel.com">
16 Deitel & Associates, Inc.
17 </OPTION>
18
19 <OPTION VALUE = "http://www.prenhall.com">
20 Prentice Hall
21 </OPTION>
22
23 <OPTION VALUE = "http://www.phptr.com/phptrinteractive">
24 Prentice Hall Interactive
25 </OPTION>
26
27</SELECT>
28
29<!-- VBScript code -->
30<SCRIPT FOR = "SiteSelector" EVENT = "ONCHANGE"
Outline
2. Page rendered by browser
31 LANGUAGE = "VBScript">
32 <!--
33 Document.Location = Document.Forms( 0 ).SiteSelector.Value
34 -->
35 </SCRIPT>
36 </FORM>
37 </BODY>
38 </HTML>
30
VBScript Example Programs
• Procedures in the next program– Minimum
• Determines the smallest of three numbers
– OddEven• Determines if the smallest number is odd or even
• Comments– Indicated by either single quote (‘) or keyword Rem
Outline
1.1 Define procedures Minimum and OddEven
1.2 Use modulus operator to determine whether number odd or even
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <HTML>
3 <!--Fig. 24.17: minimum.html -->
4
5 <HEAD>
6 <TITLE>Using VBScript Procedures</TITLE>
7
8 <SCRIPT LANGUAGE = "VBScript">
9 <!--
10 Option Explicit
11
12 ’ Find the minimum value. Assume that first value is
13 ’ the smallest.
14 Function Minimum( min, a, b )
15
16 If a < min Then
17 min = a
18 End If
19
20 If b < min Then
21 min = b
22 End If
23
24 Minimum = min ’ Return value
25 End Function
26
27 Sub OddEven( n )
28 If n Mod 2 = 0 Then
29 Call MsgBox( n & " is the smallest and is even" )
30 Else
Outline31 Call MsgBox( n & " is the smallest and is odd" )
32 End If
33 End Sub
34
35 Sub cmdButton_OnClick()
36 Dim number1, number2, number3, smallest
37
38 ’ Convert each input to Long subtype
39 number1 = CLng( Document.Forms( 0 ).txtBox1.Value )
40 number2 = CLng( Document.Forms( 0 ).txtBox2.Value )
41 number3 = CLng( Document.Forms( 0 ).txtBox3.Value )
42
43 smallest = Minimum( number1, number2, number3 )
44 Call OddEven( smallest )
45 End Sub
46-->
47</SCRIPT>
48</HEAD>
49
50<BODY>
51<FORM> Enter a number
52<INPUT TYPE = "text" NAME = "txtBox1" SIZE = "5" VALUE = "0">
53<P>Enter a number
54<INPUT TYPE = "text" NAME = "txtBox2" SIZE = "5" VALUE = "0">
55<P>Enter a number
56<INPUT TYPE = "text" NAME = "txtBox3" SIZE = "5" VALUE = "0">
57<P><INPUT TYPE = "BUTTON" NAME = "cmdButton" VALUE = "Enter">
58
59</FORM>
60</BODY>
61</HTML>
33
Program that determines the smallest of three numbers
34
Arrays
• Arrays– Data structures of related items of same type
– Fixed-size array• Size does not change during program execution
– Dynamic array• Size can change during program execution
• Redimmable array (re-dimensionable array)
– Array elements referred to by array name followed by element position (index) in parentheses, ()
– First array element at index 0
– Upper bound• Highest valid index
35
Arrays
• Example – Dim numbers(2)– Reserve 3 elements for array numbers
– 2 is the upper bound
– Different from the declaration of JavaScript
• Ubound function– Returns upper bound
• Multidimensional arrays– tripleArray(100, 8, 15)– Wrong: tripleArray(100)(8)(15)
36
Arrays
• Procedures are Public by default– Accessible to scripts on other Web pages– Private accessible only from HTML document in
which defined
• ReDim function– Allocations memory for dynamic array
– Keyword Preserve maintains current values in array
– Memory for dynamic array can be deallocated using keyword Erase
– e.g., ReDim Preserve dynamic( 5 ), • reallocate dynamic’s memory to 5 elements (not 6)
Outline
1.1 Define procedure DisplayArray
1.2 Initialize arrays
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2<HTML>
3<!--Fig. 24.18: arrays.html -->
4
5<HEAD>
6<TITLE>Using VBScript Arrays</TITLE>
7
8<SCRIPT LANGUAGE = "VBScript">
9<!--
10 Option Explicit
11
12 Public Sub DisplayArray( x, s )
13 Dim j
14
15 Document.Write( s & ": " )
16 For j = 0 to UBound( x )
17 Document.Write( x( j ) & " " )
18 Next
19
20 Document.Write( "<BR>" )
21 End Sub
22
23 Dim fixedSize( 3 ), fixedArray, dynamic(), k
24
25 ReDim dynamic( 3 ) ’ Dynamically size array
26 fixedArray = Array( "A", "B", "C" )
27
28 ’ Populate arrays with values
29 For k = 0 to UBound( fixedSize )
30 fixedSize( k ) = 50 - k
31 dynamic( k ) = Chr( 75 + k )
Outline31 dynamic( k ) = Chr( 75 + k )
32 Next
33
34 ’ Display contents of arrays
35 Call DisplayArray( fixedSize, "fixedSize" )
36 Call DisplayArray( fixedArray, "fixedArray" )
37 Call DisplayArray( dynamic, "dynamic" )
38
39 ’ Resize dynamic, preserve current values
40 ReDim Preserve dynamic( 5 )
41 dynamic( 3 ) = 3.343
42 dynamic( 4 ) = 77.37443
43
44 Call DisplayArray( dynamic, _
45 "dynamic after ReDim Preserve" )
46 -->
47 </SCRIPT>
48 </HEAD>
49 </HTML>
39
Using VBScript arrays
40
String Manipulation• VBScript strings
– Case sensitive
• String-manipulation functions– List of all String-manipulation functions – Instr
• Searches string (first argument) for substring (second argument)
• Searching performed from left to right
• If substring is found, index of found substring in the search string returned
• Instr("sparrow","arrow") returns 3 • Instr("japan","wax") returns 0
41
String Manipulation– Lcase
• Returns a lowercase string• Lcase(“HELLO@97[“) returns “hello@97[“
– Right• Returns string containing characters from right side of string
argument• Right(“Web”,2) returns “eb”
– Join• Returns string containing the concatenation of array elements
separated by a delimiter• Default delimiter is a space
– Change by passing a delimiter string for second argument• Join(Array("one","two","three")) returns “one two three”
• Join(Array("one","two","three"),"$^") returns “one$^two$^three”
42
String Manipulation
– Split• Returns array containing substrings
• Default delimiter is space character
• Optional second argument changes the delimiter• Split("red,white,and blue", ",") returns array
containing elements "red", "white" and "and blue"
43
44
45
46
String Manipulation
• Pig Latin translation algorithm:– Translate one word at a time
– If first letter a consonant,• Move first letter to end of word• Add "ay"
jump becomes umpjay
– If first letter a vowel• Move first letter to end of word
• Add "y"
ace becomes ceay
– Blanks remain as blanks
– Assume no punctuation marks, all words have two or more letters
Outline
1. Define Function procedure TranslateToPigLatin
1.1 Split phrase into words
1.2 Convert each word to pig Latin
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">2 <HTML>3 <!--Fig. 24.20: piglatin.html -->45 <HEAD>6 <TITLE>Using VBScript String Functions</TITLE>78 <SCRIPT LANGUAGE = "VBScript">9 <!--10 Option Explicit1112 Public Function TranslateToPigLatin( englishPhrase )13 Dim words ’ Stores each individual word14 Dim k, suffix1516 ’ Get each word and store in words, the
17 ’ default delimiter for Split is a space
18 words = Split( englishPhrase )
19
20 For k = 0 to UBound( words )
21 ’ Check if first letter is a vowel
22 If InStr( 1, "aeiou", _
23 LCase( Left( words( k ), 1 ) ) ) Then
24 suffix = "y"
25 Else
26 suffix = "ay"
27 End If
28
29 ’ Convert the word to pig Latin
30 words( k ) = Right( words( k ), _
Outline
1.3 Return translated phrase using Join function
31 Len( words( k ) ) - 1 ) & _
32 Left( words( k ), 1 ) & suffix
33 Next
34
35 ’ Return translated phrase, each word
36 ’ is separated by spaces
37 TranslateToPigLatin = Join( words )
38 End Function
39
40 Sub cmdButton_OnClick()
41 Dim phrase
42
43 phrase = Document.Forms( 0 ).txtInput.Value
44
45 Document.forms( 0 ).txtPigLatin.Value = _
46 TranslateToPigLatin( phrase )
47 End Sub
48-->
49</SCRIPT>
50</HEAD>
51
52<BODY>
53<FORM> Enter a sentence
54<INPUT TYPE = "text" NAME = "txtInput" SIZE = "50"><P>
55Pig Latin
56<INPUT TYPE = "text" NAME = "txtPigLatin" SIZE = "70"><P>
57<INPUT TYPE = "button" NAME = "cmdButton" VALUE = "Translate">
58
59</FORM>
60</BODY>
61</HTML>
49
Using VBScript string processing functions
50
Classes and Objects
• Object-oriented programming– Objects encapsulate data (attributes) and methods (behaviors)
– Objects have property of information hiding
– Programmers create user-defined or programmer-defined types• Classes
– Software reusability
– Stacks• Push onto stack
• Pop off of stack
• LIFO data structure
– Last-in, first-out
– Data abstraction• Abstract data types (ADTs)
51
Classes and Objects
• Private data– Get method
• Accessor method
• Query method
• Allow clients to read value of Private data
– Set method• Mutator method
• Enable clients to modify Private data
• Can provide data validation capabilities
– Public methods to get or set Private instance variables• Property Let
– Non-object subtypes (integer, string, byte, etc.)• Property Set
– Object subtypes• Property Get
Outline
A simple Property Let procedure
A simple Property Get procedure
1 Private theHour
2
3 Public Property Let Hour( hr )
4 If hr >= 0 And hr < 24 Then
5 theHour = hr
6 Else
7 theHour = 0
8 End If
9 End Property
1 Public Property Get Hour()
2 Hour = theHour
3 End Property
53
Classes and Objects
• Creating objects– Use keyword New followed by class name
• Assigning object to variable– Use keyword Set– Variable referring to object called reference
• Keywords Class and End Class • Exit Property statement
– Immediately exits Property procedure
• Predicate methods– Test truth or falsity of conditions
• Utility or helper methods– Private methods in a class’s implementation
Outline
A simple Class definition
1 Class CTime1
2 Private mHour
3
4 Public Property Let Hour( hr )
5 If hr >= 0 And hr < 24 Then
6 theHour = hr
7 Else
8 theHour = 0
9 End If
10 End Property
11
12 Public Property Get Hour()
13 Hour = theHour
14 End Property
15 End Class
55
Classes and Objects
• Regular expressions– RegExp VBScript class
– Complex pattern matching– regularExpression.Pattern = "^\d{3}-\d{2}-\d{4}$"
• Pattern property
• Caret, ^, indicates beginning of string• \d indicates any digit is a match• {3}, {2} and {4} indicate exactly 3 occurrences, 2
occurrences and 4 occurrences
• Dollar sign, $, indicates end of string
• Hyphens treated as literal characters
Outline
1. Define Class Person
1.1 Define Property Let and Property Get procedures
1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
2 <HTML>
3 <!--Fig. 24.24: classes.html -->
4
5 <HEAD>
6 <TITLE>Using a VBScript Class</TITLE>
7
8 <SCRIPT LANGUAGE = "VBScript">
9 <!--
10 Option Explicit
11
12 Class Person
13 Private name, yearsOld, ssn
14
15 Public Property Let FirstName( fn )
16 name = fn
17 End Property
18
19 Public Property Get FirstName()
20 FirstName = name
21 End Property
22
23 Public Property Let Age( a )
24 yearsOld = a
25 End Property
26
27 Public Property Get Age()
28 Age = yearsOld
29 End Property
30
Outline
1.2 Define Property Let SocialSecurity Number
1.2.1 Call validate
1.3 Validate
1.3.1 Use regular expression to check format
31 Public Property Let SocialSecurityNumber( n )
32
33 If Validate( n ) Then
34 ssn = n
35 Else
36 ssn = "000-00-0000"
37 Call MsgBox( "Invalid Social Security Format" )
38 End If
39
40 End Property
41
42 Public Property Get SocialSecurityNumber()
43 SocialSecurityNumber = ssn
44 End Property
45
46 Private Function Validate( expression )
47 Dim regularExpression
48 Set regularExpression = New RegExp
49
50 regularExpression.Pattern = "^\d{3}-\d{2}-\d{4}$"
51
52 If regularExpression.Test( expression ) Then
53 Validate = True
54 Else
55 Validate = False
56 End If
57
58 End Function
59
60 Public Function ToString()
Outline
1.4 Instantiate Person object
61 ToString = name & Space( 3 ) & age & Space( 3 ) _62 & ssn63 End Function6465 End Class ’ Person6667 Sub cmdButton_OnClick()68 Dim p ’ Declare object reference69 Set p = New Person ’ Instantiate Person object7071 With p72 .FirstName = Document.Forms(0).txtBox1.Value73 .Age = CInt( Document.Forms(0).txtBox2.Value )74 .SocialSecurityNumber = Document.Forms(0).txtBox3.Value75 Call MsgBox( .ToString() ) 76 End With 7778 End Sub79-->80</SCRIPT>81</HEAD>8283<BODY>84<FORM>Enter first name85<INPUT TYPE = "text" NAME = "txtBox1" SIZE = "10"> 86<P>Enter age87<INPUT TYPE = "text" NAME = "txtBox2" SIZE = "5"> 88<P>Enter social security number89<INPUT TYPE = "text" NAME = "txtBox3" SIZE = "10"> <P> 90<INPUT TYPE = "button" NAME = "cmdButton" VALUE = "Enter">9192</FORM>93</BODY>94</HTML>
59
Using VBScript classes and regular expressions