Solved

asp.net regular expression methods not working?

Posted on 2006-07-19
6
457 Views
Last Modified: 2008-02-01
hey ya all.  

Ok I have a regular expression html type page witch works fine, but when I made another one, using the same code, but it doesn’t want to work. The only difference between the two is that one is html form based tester and one use's values passed through the url. The page that uses the values pass through the url, works on almost all regular expression methods except for ones like:

[CODE] (?<LastName>[A-Z]\w+\-?[A-Z]?\w*),\s(?<Suffix>Jr\.|Sr\.|IV|III|II)?,?\s?(?<FirstName>[A-Z]\w*\-?[A-Z]?\w*\.?)\s?(?<MiddleName>[A-Z]?\w*\.?) [/CODE]

Matches: Walker, David F|||Smith, Jr., J. S.|||DeCarlo, Yvonne
Non-Matches: peterson, oscar

From: [url]http://regexlib.com/DisplayPatterns.aspx?cattabindex=3&categoryId=4[/url]

The url I would call from something like flash would be:

[CODE]http://localhost:1496/Projects/RegularExpressionValidator.aspx?TheString=Walker, David F&TheRegularExpression=(?<LastName>[A-Z]\w+\-?[A-Z]?\w*),\s(?<Suffix>Jr\.|Sr\.|IV|III|II)?,?\s?(?<FirstName>[A-Z]\w*\-?[A-Z]?\w*\.?)\s?(?<MiddleName>[A-Z]?\w*\.?)[/CODE]

My web version which works most of the time just not when trying to test the above regular expression

[CODE]<%@ Import NameSpace="System" %>
<%@ Import NameSpace="System.Net" %>
<%@ Import NameSpace="System.IO" %>
<%@ Import NameSpace="System.Text.RegularExpressions" %>
<%@ Page Language="VB" Debug="true" validateRequest="false" AutoEventWireup="true" %>
<script runat="server">
    Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
        ' check page isn't been post back from form event procedures
        Try
            Dim myURL As String = Request.Url.ToString()
            If myURL.IndexOf("?") > 1 Then
                Dim GetTheRegularExpressionString As String = Request.QueryString("TheRegularExpression")
                Dim GetTheStringToValidateString As String = Request.QueryString("TheString")
                '' ''Dim myURL As String = Request.Url.ToString()
                Dim StringRegex As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(GetTheRegularExpressionString)
                If StringRegex.Match(GetTheStringToValidateString).Success = True Then
                    Response.Write("dat=True")
                Else
                    Response.Write("dat=False")
                End If
            Else
                Response.Write("dat=False")
                ' Response.Redirect("RegularExpressionsHTMLVersion.aspx")
            End If
        Catch ex As Exception
            Response.Write("dat=" & ex.ToString)
        End Try
    End Sub
</script>[/CODE]

My html version which works:

[CODE]<%@ Import NameSpace="System" %>
<%@ Import NameSpace="System.Net" %>
<%@ Import NameSpace="System.IO" %>
<%@ Import NameSpace="System.Text.RegularExpressions" %>
<%@ Page Language="VB" Debug="true" validateRequest="false" AutoEventWireup="true" %>
<script runat="server">
    Protected Sub TestButton_Click(ByVal sender As Object, ByVal e As System.EventArgs)
        Try
            If TheStringToValidateInputBox.Text.Trim.Length > 0 Then
                If TheRegularExpressionInputBox.Text.Trim.Length > 0 Then
                    Dim StringRegex As System.Text.RegularExpressions.Regex = New System.Text.RegularExpressions.Regex(TheRegularExpressionInputBox.Text.Trim)
                    If StringRegex.Match(TheStringToValidateInputBox.Text.Trim).Success = True Then
                        Lbl3.Text = "Result: <I>TRUE</I> <BR>The string " & Chr(34) & " " & TheStringToValidateInputBox.Text.Trim & " " & Chr(34) & " <b><u>IS</u></b> valid for that regular expression patten " & Chr(34) & " " & TheRegularExpressionInputBox.Text.Trim & " " & Chr(34) & ""
                    Else
                        Lbl3.Text = "Result: <I>FALSE</I> <BR>The string " & Chr(34) & " " & TheStringToValidateInputBox.Text.Trim & " " & Chr(34) & " <b><u>IS NOT</u></b> valid for that regular expression patten " & Chr(34) & " " & TheRegularExpressionInputBox.Text.Trim & " " & Chr(34) & ""
                    End If
                Else
                    Lbl3.Text = "Result: The regular expression input box is empty and must have a valid regular expression method in it for this code to work"
                End If
            Else
                Lbl3.Text = "Result: The string to validate input box is empty and must have a valid input in it for this code to work"
            End If
        Catch ex As Exception
            Lbl3.Text = "Result: I am sorry to say an error has occurred!?<BR><BR>Pleases ensure you have entered a valid input string to be validated; as well as a valid regular expression to use as the validation method<BR>If the problem persists please contact me at <a href='mailto:lemming29@hotmail.com?subject=regular%20expression%20page%20issue' title='Clicking this will automatically launch your default e-mail sender' accesskey='k'>lemming29@hotmail.com</a><BR>Please check the following error message for more details<BR><BR>Error Message reads:<BR>======================<BR>" & ex.ToString & "<BR>======================<BR>End of error report"
        End Try
    End Sub
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Regular Expression Valuator HTML Version</title>
</head>
<body>
    <form id="MainForm" runat="server">
        <div>
            <asp:Label ID="Lbl1" runat="server" Text="The string to validate:"></asp:Label>
            <asp:TextBox ID="TheStringToValidateInputBox" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RFV1" runat="server" ControlToValidate="TheStringToValidateInputBox"
                ErrorMessage="* Missing Input"></asp:RequiredFieldValidator><br />
            <br />
            <asp:Label ID="Lbl2" runat="server" Text="The regular expression:"></asp:Label>
            <asp:TextBox ID="TheRegularExpressionInputBox" runat="server"></asp:TextBox>
            <asp:RequiredFieldValidator ID="RFV2" runat="server" ControlToValidate="TheRegularExpressionInputBox"
                ErrorMessage="* Missing Input"></asp:RequiredFieldValidator><br />
            <br />
            <asp:Button ID="TestButton" runat="server" Text="Test" OnClick="TestButton_Click" /><br />
            <br />
            <asp:Label ID="Lbl3" runat="server" Text="Result:"></asp:Label>
        </div>
    </form>
</body>
</html>[/CODE]

If any one can explain why his regular expression method keeps retuning false in the web version but returns valid in the html version, and how I can remedy the problem I would be very grateful
0
Comment
Question by:Rawdon Hume
  • 3
6 Comments
 
LVL 9

Expert Comment

by:Thalox
Comment Utility

I thinnk you cannot pass a regex as querystring, because it contains invalid chars.

try to use

Server.HtmlEncode() and Server.HtmlDecode()

to encode the regex before appanding to querystring and decode before using it as regular expression.
0
 
LVL 2

Author Comment

by:Rawdon Hume
Comment Utility
Cheers but sadly flash only has escape method which doesn’t seam to work as well as Server.HtmlEncode() and Server.HtmlDecode(),

How ever I was able to fix the problem using Request.Form("") method which allows me to pass any thing from flash to asp.net page so I can get a result back, for any one who has the same problem as me the key is to use .sendAndLoad in flash and follow the example in the help file when you look that up (based on flash 8, not sure if older flash help files are the same but should be)

The line in the help file:

send_lv.name = name_ti.text;

can be interprated as MyLoadVarVariableName.MyASPDOTNETVariable = MyFlashVariableValue

then in your asp.net page (based on asp.net frame work version 2.0) use:

Dim GetTheStringValueFromFlash As String = New String(Request.Form("MyASPDOTNETVariable")

That will then get the value MyFlashVariableValue from the flash file and un-like trying to pass values through the url it seams to support all characters and symbols

If you want help integrating asp.net with flash e-mail lemming29@hotmail.com or go to www.webwasp.co.uk and I will always do my best to help
0
 
LVL 2

Author Comment

by:Rawdon Hume
Comment Utility
p.s. the escape method in flash for any one wondering, converts the parameter to a string and encodes it in a URL-encoded format, where all no alphanumeric characters are replaced with % hexadecimal sequences. When used in a URL-encoded string, the percentage symbol (%) is used to introduce escape characters, and is not equivalent to the modulo operator (%). As far as i can see the standard for flash as in regards to Html Encoding methods, the method flash uses is the MIME format application/x-www-form-urlencoded (a standard format used by CGI scripts). but passing string like a regular expression method from flash to an asp.net page can't been done as far as I have found through the url as too many issues

0
 
LVL 2

Author Comment

by:Rawdon Hume
Comment Utility
umm my solution to my original problem I have already posted above !!? As i said above I used Request.Form and sendAndLoad flash action script to avoid trying to pass the values through the url
0
 
LVL 1

Accepted Solution

by:
GhostMod earned 0 total points
Comment Utility
Closed, 450 points refunded.

GhostMod
Community Support Moderator
0

Featured Post

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

AJAX ModalPopupExtender has a required property "TargetControlID" which may seem to be very confusing to new users. It means the server control that will be extended by the ModalPopup, for instance, if when you click a button, a ModalPopup displays,…
User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

762 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now