Email Validation Function: Difference between revisions
From NSIS Wiki
Jump to navigationJump to search
No edit summary |
No edit summary |
||
Line 46: | Line 46: | ||
FunctionEnd | FunctionEnd | ||
</highlight-nsis> | </highlight-nsis> | ||
[[Category:Internet Functions]] |
Revision as of 18:56, 13 March 2007
CheckUserEmailAddress
This function is useful for checking the format of an email address. Then returning an error if it doesn't meet minimum requirements.
VAR $USEREMAILADDRESS Function CheckUserEmailAddress StrCpy $R1 $USEREMAILADDRESS StrCpy $R2 "" StrCpy $R3 "" #count the number of @'s more than one is invalid, less than one is invalid ${WordFind} "$USEREMAILADDRESS" "@" "*" $R1 StrCmp "1" "$R1" lbl_check2 lbl_error lbl_check2: #count the number of words delimited by @ it should be 2. ${WordFind} "$USEREMAILADDRESS" "@" "#" $R1 StrCmp "2" "$R1" lbl_check3 lbl_error lbl_check3: #Split the words into user and domain ${WordFind} "$USEREMAILADDRESS" "@" "0" $R2 ${WordFind} "$USEREMAILADDRESS" "@" "1" $R3 #Determine if either of the fields contain special RFC822 characters ${StrFilter} "$R2" "" "" '()<>,;:\"[]' $R1 StrCmp "$R2" "$R1" 0 lbl_error ${StrFilter} "$R3" "" "" '()<>,;:\"[]' $R1 StrCmp "$R3" "$R1" 0 lbl_error lbl_check4: #Determine the number of fields in user and domain, check to see #the number of delimiter is one less than the number of words. ${WordFind} "$R2" "." "*" $R5 ${WordFind} "$R2" "." "#" $R6 IntOp $R5 $R5 + 1 StrCmp "$R5" "$R6" 0 lbl_error ${WordFind} "$R3" "." "*" $R5 ${WordFind} "$R3" "." "#" $R6 IntOp $R5 $R5 + 1 StrCmp "$R5" "$R6" lbl_check5 lbl_error lbl_check5: # make sure there is at least one "." in the domain section. ${WordFind} "$R3" "." "*" $R1 IntCmp 1 $R1 lbl_end lbl_end lbl_error goto lbl_end lbl_error: SetErrors lbl_end: FunctionEnd