Tasks like matching phone numbers, ip addresses, dates, etc are so common that you can often find them collected as a library. This chapter shows some examples for CommonRegexRuby. See also Awesome Regex: Collections.
>> require 'commonregex' => true >> data = 'hello 255.21.255.22 okay 23/04/96' # match all available patterns >> parsed = CommonRegex.new(data) >> parsed.get_ipv4 => ["255.21.255.22"] >> parsed.get_dates => ["23/04/96"] # or, use specific method directly on CommonRegex >> CommonRegex.get_ipv4(data) => ["255.21.255.22"] >> CommonRegex.get_dates(data) => ["23/04/96"]
Make sure to test these patterns for your use case. For example, the below data has a valid IPv4 address followed by another number separated by a dot character. If such cases should be ignored, then you'll have to create your own version of the pattern or change the input accordingly.
>> new_data = '184.108.40.206.2 255.21.255.22 5220.127.116.11' # 18.104.22.168 gets matched from 22.214.171.124.2 >> CommonRegex.get_ipv4(new_data) => ["126.96.36.199", "255.21.255.22"]
Some patterns are quite complex and not easy to build and validate from scratch. Libraries like CommonRegexRuby are helpful to reduce your time and effort needed for commonly known tasks. However, you do need to test the solution for your use case. See also stackoverflow: validating email addresses.