469,356 Members | 1,994 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 469,356 developers. It's quick & easy.

Regular Expression Question

Hi JavaScript Gurus,

I've a question on Regular Expressions using RegExp object. I just
want to know whether it is possible to do the search (see below) using
RegExp. Any pointers would be of immense help. Thanks.

My simple JavaScript code (inside a function):

=======================
var strList = "~@!~1#Apple~@!~2#Orange~@!~3#Mango~@!~4#Grapes~@! ~";
var strSearchStr = "~@!~3#(.[^~@!~]*)";
var objRegExp = new RegExp(strSearchStr, "gi");
var arrRegExp = objRegExp.exec(strStateList);
if (arrRegExp != null) {
document.write("<br>" + RegExp.$1);
}
delete(objRegExp);
return (true);
=======================

When I supply 3, I want to get the corresponding value that is Mango.
With the regular expression, I get the result I'm aiming for.

BUT...

if the list was changed to this:

var strList = "~@!~1#Apple~@!~2#Orange~@!~3#@!Mango~@!~4#Grapes~ @!~";

basically Mango has been changed to @!Mango. I've added two characters
@ and ! which are the row delimiters on the list string.

Then my regular expression search fails. The pattern I'm using [^~@!~]
searches and excludes individual characters ~, @ and !. But I want it
to exclude the grouping (~@!~).

I've tried the following reg exp. searches with no luck:

~@!~3#(.[^(~@!~)]*)
~@!~3#(.[^(~@!~){0,1}]*)

Any idea as what I'm doing wrong. I know this should be pretty simple
to implement.

Thanks,
Gopi
Jul 23 '05 #1
3 1339
Gopinath wrote:
[...]
var strList = "~@!~1#Apple~@!~2#Orange~@!~3#Mango~@!~4#Grapes~@! ~"; ^^^^^^^ var strSearchStr = "~@!~3#(.[^~@!~]*)";
var objRegExp = new RegExp(strSearchStr, "gi");
var arrRegExp = objRegExp.exec(strStateList); ^^^^^^^^^^^^
What is `strStateList'?
if (arrRegExp != null) {
if (arrRegExp)

suffices.
document.write("<br>" + RegExp.$1);
You should not use RegExp.$* anymore, those properties are deprecated.
RegExp.prototype.exec() returns the extended Array object you are looking
for -- use arrRegExp[1].
}
delete(objRegExp);
`delete' is not a method, it is a special operator. You would have removed
the parantheses and include whitespace between operator and operand if
the `delete' operation would have made sense: You can only apply `delete'
successfully on variables that have *not* been declared with `var' or on
object properties. But since `objRegExp' is declared local and does not
exist outside of the execution context, it is not required to free the
allocated memory explicitely.
return (true);
`return' is not a method, it is a something between statement and operator.
It is not necessary to use parantheses here.
=======================

When I supply 3, I want to get the corresponding value that is Mango.
With the regular expression, I get the result I'm aiming for.
Which is surprising to me.
BUT...

if the list was changed to this:

var strList = "~@!~1#Apple~@!~2#Orange~@!~3#@!Mango~@!~4#Grapes~ @!~";

basically Mango has been changed to @!Mango. I've added two characters
@ and ! which are the row delimiters on the list string.

Then my regular expression search fails. The pattern I'm using [^~@!~]
searches and excludes individual characters ~, @ and !.
Which is why the second "~" can be removed.
But I want it to exclude the grouping (~@!~).

I've tried the following reg exp. searches with no luck:

~@!~3#(.[^(~@!~)]*)
~@!~3#(.[^(~@!~){0,1}]*)
Within a character class, with the exception of "^" at the beginning
and "-" between other characters, characters have no special meaning,
so the above character classes will only additionally match "(", "~",
")" and "{", "0", ",", "1", and "}".
Any idea as what I'm doing wrong.
You have not read the manual.

<http://devedge.netscape.com/library/manuals/2000/javascript/1.5/guide/>
<http://devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/>
<http://devedge.netscape.com/library/manuals/2000/javascript/1.5/reference/regexp.html#1193136>
I know this should be pretty simple to implement.


var strSearchStr = "~@!~3#(.(?!^~@!~)*)";

But if you *know* which RegExp to use, you should not use the RegExp()
constructor, but RegExp object literals:

var
strList = "~@!~1#Apple~@!~2#Orange~@!~3#Mango~@!~4#Grapes~@! ~",
arrRegExp = /~@!~3#(.(?!~@!~)*)/gi.exec(strList);
...
HTH

PointedEars
Jul 23 '05 #2

Hi PointedEars,

Thanks for the suggestions and pointers. They were helpful. And I've
found out the right regular expression for my problem.

Thanks,
Gopi
*** Sent via Developersdex http://www.developersdex.com ***
Don't just participate in USENET...get rewarded for it!
Jul 23 '05 #3
Alien Visitor wrote:
Thanks for the suggestions and pointers. They were helpful.
You're welcome.
And I've found out the right regular expression for my problem.


Care to give something back to the community?
PointedEars

P.S.: Changing names on Usenet is undesired behavior.
Jul 23 '05 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

5 posts views Thread by Bradley Plett | last post: by
10 posts views Thread by Lee Kuhn | last post: by
18 posts views Thread by Q. John Chen | last post: by
7 posts views Thread by norton | last post: by
7 posts views Thread by Billa | last post: by
6 posts views Thread by Ludwig | last post: by
3 posts views Thread by Zach | last post: by
25 posts views Thread by Mike | last post: by
reply views Thread by zhoujie | last post: by
1 post views Thread by Marylou17 | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.