# Parse IP Address

**URL:** <https://forum.inductiveautomation.com/t/parse-ip-address/9052>\
**Category:** Ignition\
**Created:** [September 12, 2014, 10:34am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052 "2014-09-12T10:34:52Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![Automator59](https://avatars.discourse-cdn.com/v4/letter/a/13edae/32.png) [@Automator59](https://forum.inductiveautomation.com/u/Automator59)\
**Post date:** [September 12, 2014, 10:34am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/1 "2014-09-12T10:34:52Z")

</div>

I am trying to get the third octet in the client IP Address that will designate the zone the client resides in. So far I haven’t been able to create an expression tag to perform that function.

---

<div class="post-metadata">

**Author:** ![Kyle\_Chase](https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/32.png) [@Kyle\_Chase](https://forum.inductiveautomation.com/u/Kyle_Chase)\
**Post date:** [September 12, 2014, 11:19am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/2 "2014-09-12T11:19:23Z")

</div>

```auto
toInt(split("192.193.194.195","\\.")[2,0])
```

returns

```auto
194
```

split() will create a dataset, with each row being equal to the values between the separator string. The \. is a regex, for a period. Finally, [2,0] is the row,column of the 3rd octet.

---

<div class="post-metadata">

**Author:** ![Automator59](https://avatars.discourse-cdn.com/v4/letter/a/13edae/32.png) [@Automator59](https://forum.inductiveautomation.com/u/Automator59)\
**Post date:** [September 12, 2014, 11:23am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/3 "2014-09-12T11:23:30Z")

</div>

Thank you for the fast reply.

I copied and pasted:  
toInt(split(“source text string”,"\.")[2,0])  
into the expression of my expression tag and get an “Evaluation Error”.

---

<div class="post-metadata">

**Author:** ![Kyle\_Chase](https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/32.png) [@Kyle\_Chase](https://forum.inductiveautomation.com/u/Kyle_Chase)\
**Post date:** [September 12, 2014, 11:29am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/4 "2014-09-12T11:29:59Z")

</div>

Did you replace the source text for an actual IP address?

You can wrap it in a try in case there is an invalid address, syntatically speaking

```auto
try(toInt(split("source text string","\\.")[2,0]),-1)
```

returns

```auto
-1
```

This

```auto
try(toInt(split("192.193.194.195","\\.")[2,0]),-1)
```

returns

```auto
194
```

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [September 12, 2014, 11:39am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/5 "2014-09-12T11:39:14Z")

</div>

To expand on Kyle’s solution, to use the client’s IP address:

```auto
try(toInt(split({[System]Client/Network/IPAddress},'\\.')[2,0]),-1)
```

EDIT: Added “try” function

---

<div class="post-metadata">

**Author:** ![Automator59](https://avatars.discourse-cdn.com/v4/letter/a/13edae/32.png) [@Automator59](https://forum.inductiveautomation.com/u/Automator59)\
**Post date:** [September 12, 2014, 11:40am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/6 "2014-09-12T11:40:21Z")

</div>

I’m using the system variable  
toInt(split({[System]Client/Network/IPAddress},"\.")[2,0])

---

<div class="post-metadata">

**Author:** ![Automator59](https://avatars.discourse-cdn.com/v4/letter/a/13edae/32.png) [@Automator59](https://forum.inductiveautomation.com/u/Automator59)\
**Post date:** [September 12, 2014, 11:41am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/7 "2014-09-12T11:41:37Z")

</div>

This is inside an Expression Tag

---

<div class="post-metadata">

**Author:** ![Automator59](https://avatars.discourse-cdn.com/v4/letter/a/13edae/32.png) [@Automator59](https://forum.inductiveautomation.com/u/Automator59)\
**Post date:** [September 12, 2014, 11:44am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/8 "2014-09-12T11:44:41Z")

</div>

I’m running 7.7.1 rc2

---

<div class="post-metadata">

**Author:** ![JordanCClark](https://sea1.discourse-cdn.com/inductiveautomation/user_avatar/forum.inductiveautomation.com/jordancclark/32/83362_2.png) [@JordanCClark](https://forum.inductiveautomation.com/u/JordanCClark)\
**Post date:** [September 12, 2014, 11:45am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/9 "2014-09-12T11:45:16Z")

</div>

> [@Automator59](#):
>
> This is inside an Expression Tag

Ah. Try putting it in a Client Tag.

EDIT: You'll really want to put it in a Client Tag anyway, because you want it to work just inside each client. Expression Tags are global in nature.

---

<div class="post-metadata">

**Author:** ![Kyle\_Chase](https://avatars.discourse-cdn.com/v4/letter/k/9de0a6/32.png) [@Kyle\_Chase](https://forum.inductiveautomation.com/u/Kyle_Chase)\
**Post date:** [September 12, 2014, 11:55am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/10 "2014-09-12T11:55:58Z")

</div>

What Jordan said is correct. That tag is not available in the gateway, as it is unique to the client runtime.

---

<div class="post-metadata">

**Author:** ![Automator59](https://avatars.discourse-cdn.com/v4/letter/a/13edae/32.png) [@Automator59](https://forum.inductiveautomation.com/u/Automator59)\
**Post date:** [September 12, 2014, 11:57am UTC](https://forum.inductiveautomation.com/t/parse-ip-address/9052/11 "2014-09-12T11:57:09Z")

</div>

😃  
Thank you, that did it!

I was testing on the wrong one, I had a client tag I was experimenting with as well but was attempting your suggestion with an expression tag.
