# HowTo search a string for content?

**URL:** <https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157>\
**Category:** Rails\
**Created:** [September 9, 2008, 10:25pm UTC](https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157 "2008-09-09T22:25:38Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![drlelon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ee59a6/32.png) [@drlelon](https://www.ruby-forum.com/u/drlelon)\
**Post date:** [September 9, 2008, 10:25pm UTC](https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157/1 "2008-09-09T22:25:38Z")

</div>

Obviously not a genius with Ruby.

I simply want to check if the string from an form input is a phone  
number, or an email.

I started testing wether the string.class was Bignum or Fixnum. If it  
was I presumed it was a phonenumber. Although this works in script/  
console, my application dosn’t seem to pass the Bignum and Fixnum  
tests and proceeds to the else statement.

So now I wanna try looking for the content in my string.

I thought, hey, ill just look for the “@” sign in the posted string.  
But how? I’ve been searching for several hourse. And don’t seem to run  
into any solution.

So I’ll go to bed, and cross my fingers.

Thx in advance

Btw, this is what I’m trying:

I’m using a phonenumber or the email as login. Same field.  
If the user enters his phonenumber, I wanna make sure it works weather  
the user types:

0045xxxxxxxx  
45xxxxxxxx

(0045) Danish area code.

def phone(input)  
unless input == ############## \<------ unless what? Was  
thinking, unless @ in input.  
value = input.to\_s  
lenStop = value.length  
lenStart = value.length - 8  
username = ‘45’ + value[lenStart…lenStop]

```
    return username
  else
    return input
  end

```

end

I figure code dosn’t work if user puts spaces in his phonenumber. I  
guess that can be fixed with a gsub " ", “”… something like that.

---

<div class="post-metadata">

**Author:** ![drlelon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ee59a6/32.png) [@drlelon](https://www.ruby-forum.com/u/drlelon)\
**Post date:** [September 9, 2008, 10:36pm UTC](https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157/2 "2008-09-09T22:36:32Z")

</div>

David,

I believe that regular expressions is what you may be looking for…

> > s = “(0045) 444-5555”  
> > =\> “(0045) 444-5555”
> 
> > codes = s.match /((\d+))?\s\*(\d{3})(\s\*-\s\*)?(\d{4})/  
> > =\> #\<MatchData “(0045) 444-5555” 1:"(0045)" 2:“444” 3:"-" 4:“5555”\>
> 
> > codes[0]  
> > =\> “(0045) 444-5555”
> 
> > codes[1]  
> > =\> “(0045)”
> 
> > codes[2]  
> > =\> “444”
> 
> > codes[4]  
> > =\> “5555”

hth…

David L. wrote:

> I figure code dosn’t work if user puts spaces in his phonenumber. I  
> guess that can be fixed with a gsub " ", “”… something like that.

---

<div class="post-metadata">

**Author:** ![drlelon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ee59a6/32.png) [@drlelon](https://www.ruby-forum.com/u/drlelon)\
**Post date:** [September 9, 2008, 10:42pm UTC](https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157/3 "2008-09-09T22:42:03Z")

</div>

On 9 Sep 2008, at 21:24, David L. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Obviously not a genius with Ruby.
> 
> I simply want to check if the string from an form input is a phone  
> number, or an email.

Read up on regular expressions

Fred

---

<div class="post-metadata">

**Author:** ![drlelon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ee59a6/32.png) [@drlelon](https://www.ruby-forum.com/u/drlelon)\
**Post date:** [September 10, 2008, 2:24pm UTC](https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157/4 "2008-09-10T14:24:02Z")

</div>

the others are right to point you to regular expressions–definitely  
worth learning.

But to give you a fish, you can use String’s [] method to check for an @  
symbol.

if my\_string[’@’] then  
# my\_string has an @ in it.  
end

HTH,

-Roy

---

<div class="post-metadata">

**Author:** ![drlelon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ee59a6/32.png) [@drlelon](https://www.ruby-forum.com/u/drlelon)\
**Post date:** [September 10, 2008, 9:06am UTC](https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157/5 "2008-09-10T09:06:05Z")

</div>

regular expressions on the menu today.

Cuz:

/((\d+))?\s\*(\d{3})(\s\*-\s\*)?(\d{4})/

Makes -200% sense to me currently

Thank you guys

---

<div class="post-metadata">

**Author:** ![drlelon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ee59a6/32.png) [@drlelon](https://www.ruby-forum.com/u/drlelon)\
**Post date:** [September 11, 2008, 5:14pm UTC](https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157/6 "2008-09-11T17:14:36Z")

</div>

Heh–there’s actually a famous regexp (if you can imagine such a thing)  
that faithfully tracks the RFA spec for e-mail addresses. It’s  
something like half a printed page long and would make a kick-ass  
tattoo.

I’m writing from the bus, else I’d google up a link to it.

But lots of much much simpler regexps will handle 99% of valid  
addresses. Those are easily googled up…

---

<div class="post-metadata">

**Author:** ![drlelon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ee59a6/32.png) [@drlelon](https://www.ruby-forum.com/u/drlelon)\
**Post date:** [September 11, 2008, 5:18pm UTC](https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157/7 "2008-09-11T17:18:43Z")

</div>

David -

On 11-Sep-08, at 11:13 AM, Pardee, Roy wrote:

> Guess Reg Exp can probably define a more accurate pattern for email  
> validation.
> 
> Thx

this is one that works pretty well for us:

validates\_format\_of :email, :with =\> /\b[A-Z0-9.\_%-]+@[A-  
Z0-9.-]+.[A-Z]{2,4}\b/i, :if =\> Proc.new { |user| !user.email.blank?  
&& !user.password\_being\_reset}

it might have some holes

Jodi

---

<div class="post-metadata">

**Author:** ![drlelon](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/ee59a6/32.png) [@drlelon](https://www.ruby-forum.com/u/drlelon)\
**Post date:** [September 11, 2008, 9:40am UTC](https://www.ruby-forum.com/t/howto-search-a-string-for-content/148157/8 "2008-09-11T09:40:41Z")

</div>

Hehe… definetly a more simple way to do exactly that. Thank you

Guess Reg Exp can probably define a more accurate pattern for email  
validation.

Thx
