Step 1: Add this to your bookmarks. Whenever I need to look up regexes, it's my first stop
Step 2: Let's walk through your code
text.gsub(/\s/, "-")
You're calling the gsub
function, and giving it 2 parameters.
The first parameter is /\s/
, which is ruby for "create a new regexp containing \s
(the // are like special "" for regexes).
The second parameter is the string "-"
.
This will therefore replace all whitespace characters with hyphens. So far, so good.
.gsub([^\W-], '').downcase
Next you call gsub again, passing it 2 parameters.
The first parameter is [^\W-]
. Because we didn't quote it in forward-slashes, ruby will literally try run that code. []
creates an array, then it tries to put ^\W-
into the array, which is not valid code, so it breaks.
Changing it to /[^\W-]/
gives us a valid regex.
Looking at the regex, the []
says 'match any character in this group. The group contains \W
(which means non-word character) and -
, so the regex should match any non-word character, or any hyphen.
As the second thing you pass to gsub is an empty string, it should end up replacing all the non-word characters and hyphens with empty string (thereby stripping them out )
.downcase
Which just converts the string to lower case.
Hope this helps :-)