EL and regular expression

F

francan

I am trying to use a Regular Expression in Tomcat 6.0.20 with EL and
its not working:
<c:set var="info" value="joe2222" />
Here are results = ${fn:replace(info,'\d+','')}<br><br>


Error message -
org.apache.jasper.JasperException: An exception occurred processing
JSP page /jsp/reg2.jsp at line 14

11:
12:
13: <c:set var="info" value="joe2222" />
14: Here are results = ${fn:replace(info,'\d+','')}<br><br>


Please advise.
 
L

Lew

francan said:
I am trying to use a Regular Expression in Tomcat 6.0.20 with EL and
its not working:
<c:set var="info" value="joe2222" />
Here are results = ${fn:replace(info,'\d+','')}<br><br>


Error message -
org.apache.jasper.JasperException: An exception occurred processing
JSP page /jsp/reg2.jsp at line 14

11:
12:
13: <c:set var="info" value="joe2222" />
14: Here are results = ${fn:replace(info,'\d+','')}<br><br>


Please advise.

Find the exception that occurred. It will give you details. From the message
it looks like a compiler error, but stopping at "an exception" gives too
little detail.

I suspect you have insufficient backslashes, and that the Java compiler is
trying to parse '\d', which raises a compiler error.
 
F

francan

Find the exception that occurred.  It will give you details.  From the message
it looks like a compiler error, but stopping at "an exception" gives too
little detail.

I suspect you have insufficient backslashes, and that the Java compiler is
trying to parse '\d', which raises a compiler error.

Thanks,

I tried the below and it worked and got no error but it didnt
substitute the value joe2222 for joe where the \d should replace the
number:

<c:set var="info" value="joe2222" />
Here are results = ${fn:replace(info,'\\d+','')}

Please advise.
 
L

Lew

francan said:
I tried the below and it worked and got no error but it didnt
substitute the value joe2222 for joe where the \d should replace the
number:

Don't you mean it didn't substitute the value "joe" for "joe2222"? (You
substitute the new for the old; you replace the old with the new.)
<c:set var="info" value="joe2222" />
Here are results = ${fn:replace(info,'\\d+','')}

Are you sure you have the right number of backslashes?

It seems like you haven't researched how many layers translate strings,
replacing doubled backslashes with single ones. Programming requires looking
up documentation for the tools you use, in addition to just trying stuff to
see what happens. The expression-language parser probably does that, the
'fn:replace' tag probably does that and the Java parser certainly does that.
I don't know the number myself off the top of my head (I'd have to look up the
docs), but I suspect that there are three doublings going on.

Even when you do just try stuff, you should track what you changed and what
was the exact behavior you got, against the exact behavior you wanted.

Speaking of which, your question provides very little data on which to base an
answer. You hint at the behavior you want and you completely omit the
behavior you got.

You should follow the guidelines set forth in
<http://sscce.org/>
 
D

Daniel Pitts

Don't you mean it didn't substitute the value "joe" for "joe2222"? (You
substitute the new for the old; you replace the old with the new.)


Are you sure you have the right number of backslashes?

It seems like you haven't researched how many layers translate strings,
replacing doubled backslashes with single ones. Programming requires
looking up documentation for the tools you use, in addition to just
trying stuff to see what happens. The expression-language parser
probably does that, the 'fn:replace' tag probably does that and the Java
parser certainly does that. I don't know the number myself off the top
of my head (I'd have to look up the docs), but I suspect that there are
three doublings going on.
Actually, I'm fairly certain that the string in JSP is the same as in
Java, so "\\d+" would be correct. Now, the I wonder if fn:replace
actually takes a regex. I don't think it does.
 
F

francan

Don't you mean it didn't substitute the value "joe" for "joe2222"?  (You
substitute the new for the old; you replace the old with the new.)


Are you sure you have the right number of backslashes?

It seems like you haven't researched how many layers translate strings,
replacing doubled backslashes with single ones.  Programming requires looking
up documentation for the tools you use, in addition to just trying stuff to
see what happens.  The expression-language parser probably does that, the
'fn:replace' tag probably does that and the Java parser certainly does that.
I don't know the number myself off the top of my head (I'd have to look up the
docs), but I suspect that there are three doublings going on.

Even when you do just try stuff, you should track what you changed and what
was the exact behavior you got, against the exact behavior you wanted.

Speaking of which, your question provides very little data on which to base an
answer.  You hint at the behavior you want and you completely omit the
behavior you got.

You should follow the guidelines set forth in
<http://sscce.org/>

I apologize if I was not clear in my post. I researched Custom
Functions in JSP Expressions and created a function to make it work.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,995
Messages
2,570,226
Members
46,815
Latest member
treekmostly22

Latest Threads

Top