469,358 Members | 1,659 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

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

How to search a particular substring in square bracket

Hi frnds,

Im having a problem in searching out a particular substring in a
string.

Here the code:
---------------------
<html>
<script>
var tmpString="[Wed May 3 18:25:14 2006] [192.168.1.61] [GET
/manual/en/images/down.gif] [304] [0] [] [396 msecs]";
var ip="[192.168.1.61]";
var arr=tmpString.match(ip)
(or)
var arr=tmpString.search(ip)

alert(arr);
</script>
<body>
</body>
</html>

So in my tmpString variable, i have the data like this with square
brackets,Now i want to compare the ip variable value with tmpString
contained ip value, due to this sqaure brackets im not able to compare
it accurately.I used "match" and "search" commands, both are not
useful. While using "search" , it is showing error if square bracket
used.using match it is returning some interger.
If im comparing with square brackets, then some other problems are
creating i.e, if i give 192.168.1.6 as ip variable value and compared
with tmpString value, then also it is showing output as the correct
one.

Can anyone give me a proper solution for this

Thanks
Dinesh....

Dec 6 '06 #1
3 2701
ba*****************@gmail.com wrote:
Im having a problem in searching out a particular substring in a
string.
var tmpString="[Wed May 3 18:25:14 2006] [192.168.1.61] [GET
/manual/en/images/down.gif] [304] [0] [] [396 msecs]";
var ip="[192.168.1.61]";
var arr=tmpString.match(ip)
(or)
var arr=tmpString.search(ip)

So in my tmpString variable, i have the data like this with square
brackets, Now i want to compare the ip variable value with tmpString
contained ip value, due to this sqaure brackets im not able to compare
it accurately.
Both match and search take regular expressions as their arguments.
And, if given a non-regex argument, match() and search() automatically
_convert_ that argument to a regex.

Square brackets [] are a regular expression operator. In a regex,
"[192.168.1.61]" matches _one_character,_ as long as that character is
_any_ of 1,9,2,6 or 8.
While using "search" , it is showing error if square bracket
used.
Hmm, when I run your example code using search(), arr evaluates to 11.
11 is the position in tmpString of the first match for the regex
"[192.168.1.61]"; which is the digit "1" in "18:25:14".
using match it is returning some interger.
Agreed. Using match() in your example, arr evaluates to 1. In this
case, match() is returning the string that was matched. But the regex
"[192.168.1.61]" only matches one character, the 1 in "18:25:14".

If you escape each of the square brackets in ip with a double
backslash, you should get more reasonable results:

var ip="\\[192.168.1.61\\]";
var tmpString="[Wed May 3 18:25:14 2006] [192.168.1.61]
[GET/manual/en/images/down.gif] [304] [0] [] [396 msecs]";
var matched=tmpString.match(ip);
var searched=tmpString.search(ip);

Now matched should contain "[192.168.1.61]", which is the part of
tmpString that matches ip. And searched should contain "26", which is
the position in tmpString of the first character of the substring that
matches ip.

Dec 6 '06 #2
ba*****************@gmail.com wrote:
Hi frnds,

Im having a problem in searching out a particular substring in a
string.

Here the code:
---------------------
<html>
<script>
var tmpString="[Wed May 3 18:25:14 2006] [192.168.1.61] [GET
/manual/en/images/down.gif] [304] [0] [] [396 msecs]";
var ip="[192.168.1.61]";
var arr=tmpString.match(ip)
The paramter supplied to match is supposed to be a regular expression,
not a string. If you just want to see if tmpString contains the string
"[192.168.1.61]" then use test (tmpString wrapped for posting):

var tmpString = "[Wed May 3 18:25:14 2006] [192.168.1.61]"
+ " [GET /manual/en/images/down.gif] [304]"
+ " [0] [] [396 msecs]";
alert( /\[192\.168\.1\.61\]/.test(tmpString) );

If you wish to supply the IP address as a variable, you can use:

var ip = "192.168.1.61";
var re = new RegExp('\\['+ip.replace(/\./g,'\\.')+'\\]');
var tmpString = "[Wed May 3 18:25:14 2006] [192.168.1.61]"
+ " [GET /manual/en/images/down.gif] [304]"
+ " [0] [] [396 msecs]";
alert( re.test(tmpString) );

A regular expression of:

var re = new RegExp('\\[' + ip + '\\]');

may be sufficient, but there is a good chance it many not. Please test
thoroughly.

--
Rob

Dec 6 '06 #3
VK

ba*****************@gmail.com wrote:
<html>
<script>
var tmpString="[Wed May 3 18:25:14 2006] [192.168.1.61] [GET
/manual/en/images/down.gif] [304] [0] [] [396 msecs]";
var ip="[192.168.1.61]";
var arr=tmpString.match(ip)
(or)
var arr=tmpString.search(ip)

alert(arr);
</script>
<body>
</body>
</html>
if (tmpString.indexOf(ip) != -1) {
// match found
}
else {
// no match found
}

KISS rules :-)

Dec 6 '06 #4

This discussion thread is closed

Replies have been disabled for this discussion.

Similar topics

32 posts views Thread by tshad | last post: by
7 posts views Thread by pyluke | last post: by
5 posts views Thread by digitalorganics | last post: by
4 posts views Thread by red vertigo | last post: by
1 post views Thread by prodziedzic | last post: by
1 post views Thread by CARIGAR | last post: by
reply views Thread by suresh191 | 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.